我在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 ++中的指针中出现?
答案 0 :(得分:7)
问题是int*
可以用于C中的许多不同场景。你如何编组这取决于int* arg2
表示的内容。
例如,如果只是设置int的值,则可以将其编组为ref int
。但是,如果int*
表示数组,则需要传递一个数组(但这不太可能,因为没有长度项,这在通过指针使用数组时很常见)。