Search the Community
Showing results for tags 'extensions'.
Found 3 results
-
After using RGiesecke's DllExport package for years for getting C# ARMA extensions working, I wanted to know exactly how it worked and in the process ended up writing a DllExport package specific for ARMA's exports. You can download it here https://www.nuget.org/packages/Maca134.Arma.DllExport/ or Maca134.Arma.DllExport in Nuget. Also source is on Github https://github.com/maca134/Maca134.Arma.DllExport. Here is the old way of doing it (64bit): [DllExport("RVExtension", CallingConvention = System.Runtime.InteropServices.CallingConvention.Winapi)] public static void RVExtension(StringBuilder output, int outputSize, [MarshalAs(UnmanagedType.LPStr)] string function) { output.Append(function); } With the new package it simplifies the code into: [ArmaDllExport] public static string Invoke(string function, int outputSize) { return function; } The package will also switch the export name depending on bit'ness of the DLL.
-
csharp Arma (De)Serializer - C# Extensions
maca134 posted a topic in ARMA 3 - ADDONS & MODS: COMPLETE
This is a package that contains a JsonConvertor for the Newtonsoft.Json package in C#. It's purpose is to convert between C# data types and ARMA data types. If you have used Newtonsoft.Json you will be familar with mapping C# properties to Json properties and vise versa. You can download it here https://www.nuget.org/packages/Maca134.Arma.Serializer/ or Maca134.Arma.Serializer in Nuget. Also source is on Github https://github.com/maca134/Maca134.Arma.Serializer. Here is a very basic example: public class TestClass { public string Var1 { get; set; } public string[] Var1A { get; set; } public int Var2 { get; set; } public float Var3 { get; set; } public bool Var4 { get; set; } public TestClassInner Var5 { get; set; } public List<string> Var1B { get; set; } } public class TestClassInner { public string Var1 { get; set; } public int Var2 { get; set; } public float Var3 { get; set; } public bool Var4 { get; set; } } var testData = new TestClass { Var1 = "he\"llo", Var1A = new[] {"1", "2", "3"}, Var1B = new List<string> { "1", "2", "3" }, Var2 = 1, Var3 = 1.2f, Var4 = false, Var5 = new TestClassInner { Var1 = "h\"ello", Var2 = 1, Var3 = 1.2f, Var4 = false, } }; /* Returns: ["he""llo",["1","2","3"],1,1.2,false,["h""ello",1,1.2,false],["1","2","3"]] */ var str = ArmaArrayConvert.SerializeObject(testData); /* Returns the reconstructed object */ var obj = ArmaArrayConvert.DeserializeObject<TestClass>(str); I fairly sure I have covered all the types but there maybe missing bits. -
Hi everyone, After reading the BIS documentation of how to create extensions (https://community.bistudio.com/wiki/Extensions) and see examples from KK's blog I tried to make the same sample but on Cygwin (MSYS-2) but It's doesn't work. I do appreciate some help from anyone with more experience than me. I share the code and the compilation command lines: Source code (my1st.cpp): // Windows Header Files: #include <Windows.h> #define DLLEXPORT __declspec(dllexport) extern "C" { DLLEXPORT void __stdcall RVExtension(char *output, int outputSize, const char *function); } void __stdcall RVExtension(char *output, int outputSize, const char *function) { strncpy_s(output, outputSize, "IT WORKS!", _TRUNCATE); } BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } Command line compilation: g++ -c -o my1st.o my1st.cpp g++ -o my1st.dll my1st.o -s -shared -Wl,--subsystem,windows
- 21 replies
-
- dll
- extensions
-
(and 1 more)
Tagged with: