6

我在 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++ 的指针中?

4

1 回答 1

9

问题是int*可以用于 C 中的许多不同场景。如何编组这取决于它的int* arg2含义。

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

于 2012-06-19T16:48:29.270 回答