编组int *到C#

时间:2012-06-19 16:45:18

标签: c# c++ marshalling

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

你能不能告诉我我应该怎么做,因为我在这里感到困惑。

[DllImport(Dllname)]
extern void someFunc([MarshallAsAttribute(UnmanagedType,LPStr)] string arg1, IntPtr arg2);

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

1 个答案:

答案 0 :(得分:7)

问题是int*可以用于C中的许多不同场景。你如何编组这取决于int* arg2表示的内容。

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