[英]Marshalling int* to C#
我在 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++ 的指针中?
问题是int*
可用于 C 中的许多不同场景。如何编组这取决于int* arg2
的含义。
例如,如果它只是设置一个 int 值,您可以将其编组为ref int
。 但是,如果int*
表示一个数组,则您需要传递一个数组(但是这不太可能,因为没有长度项,这在通过指针使用数组时很常见)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.