【发布时间】:2009-09-17 18:20:10
【问题描述】:
我在 C# 应用程序中使用用 C++ 编写的 dll。 什么等价于
char const *unsigned short
在 C# 中
谢谢
【问题讨论】:
-
LOADERDLL_API int CLoaderDLL::Open ( const char * pDevicePath )
我在 C# 应用程序中使用用 C++ 编写的 dll。 什么等价于
char const *unsigned short在 C# 中
谢谢
【问题讨论】:
【讨论】:
pDevicePath 看起来它代表了一个字符串路径。所以我相信这应该编组为LPStr:msdn.microsoft.com/en-us/library/s9ts558h.aspx
我查看了您问题的代码,我认为我的措辞更好(检查意图)。如果是这样,您正在寻找:
string 或 byte[],取决于变量在 C 代码中的使用方式。ushort,假设您的 C 编译器生成的 unsigned short 是 16 位的。在 C# 中,ushort 始终为 16 位(而uint 始终为 32 位)。恭喜 MS 终于在这里给了我们一些一致性。 :)【讨论】:
要调用通过 DLLImport 公开的方法,您需要使用 IntPtr 类型的指针。
请记住,在 C++ 中 char* 实际上是一个指向内存的指针,通常由一个 4 字节的 int 表示。
【讨论】:
IntPtr,除非你必须(有时是编组器强加的,有时是C代码中的底层用法)——只要byte[]或@ 987654323@工作他们更安全,更有意义。