编组int*到C#

sta*_*NCT 5 c# c++ marshalling

我在C++中有一个函数void someFunc(char* arg1, int* arg2),我想编组参数,因为我在C#中使用这个函数(在导入DLL之后).

你能不能告诉我我应该怎么做,因为我在这里很困惑.

[DllImport(Dllname)]
extern void someFunc([MarshallAsAttribute(UnmanagedType,LPStr)] string arg1, IntPtr arg2);
Run Code Online (Sandbox Code Playgroud)

我应该在这里使用IntPtr吗?我不能从C#传递任何int变量的地址,以便它会在C++中的指针中出现?

Ree*_*sey 7

问题int*可以用于C中的许多不同场景.你如何编组这取决于int* arg2它的意思.

例如,如果它只是设置int的值,您可以将其编组为ref int.但是,如果int*表示数组,则需要传递数组(但这不太可能,因为没有长度项,这在通过指针使用数组时很常见).