【发布时间】:2012-06-21 18:18:28
【问题描述】:
我在 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++ 的指针中?
【问题讨论】:
-
您实际上可以在 C# 中使用本机指针,使用不安全的代码块。虽然我不推荐它,因为它会导致 API 不直观。
-
您需要描述这些指针的含义。特别是它们也指向多少数据,如果函数在返回后保留指针,以及如果您想将
null传递给它们。
标签: c# c++ marshalling