Ich habe eine Funktion in C++ void someFunc(char* arg1, int* arg2)
, die ich die Parameter Marschall wollen, wie ich diese Funktion in C# (nach der DLL-Import) ..Rangierung int * zu C#
Können Sie mir pls sagen, wie ich sollte Marshall, wie ich hier verwirrt bin.
[DllImport(Dllname)]
extern void someFunc([MarshallAsAttribute(UnmanagedType,LPStr)] string arg1, IntPtr arg2);
Soll ich hier ein IntPtr verwenden? Ich kann die Adresse von irgendeiner int-Variablen von C# nicht übergeben, damit es in dem Zeiger in C++ landet?
Sie können native Zeiger in C# tatsächlich verwenden, indem Sie unsichere Codeblöcke verwenden. Obwohl ich es nicht empfehlen würde, da es für eine nicht intuitive API führt. –
Sie müssen die Bedeutung dieser Zeiger beschreiben. Insbesondere, wie viele Daten sie auch zeigen, wenn die Funktion die Zeiger nach ihrer Rückkehr behält und wenn Sie ihnen "null" übergeben wollen. – CodesInChaos