C++ 的等价物C# 中的引用类型
我在 C# 应用程序中使用用 C++ 编写的 dll。 的等价物是什么
char const *
unsigned Short
C# 中
?
I am using a dll written in C++ in a C# application.
What is the equivalent for
char const *
unsigned short
in C#
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
C++ 中的
char*
可以有不同的含义,例如指向字节数组的指针或 ANSI 编码的空终止字符串。因此,如何将值编组到 C# 取决于数据的含义。唯一绝对正确的答案是:它是一个IntPtr
。C++ 中的
无符号短
通常是 16 位无符号整数:UInt16
(或 C# 中的ushort
)。A
char*
in C++ can have different meanings, e.g. a pointer to an array of bytes or an ANSI encoded null-terminated string. So it depends on the meaning of your data how the value can be marshaled to C#. The only answer that is definitively not wrong is: it's anIntPtr
.A
unsigned short
in C++ is usually a 16-bit unsigned integer:UInt16
(orushort
in C#).我查看了您问题的代码,我认为我的措辞更好(检查意图)。如果是这样,您正在寻找:
string
或byte[]
,具体取决于变量在 C 代码中的使用方式。ushort
,假设 C 编译器生成的unsigned Short
是 16 位。在 C# 中,ushort
始终为 16 位(而uint
始终为 32 位)。恭喜微软终于给我们带来了一些一致性。 :)I looked at the code for your question and I think I got it worded better (check the intent). If so, you are looking for:
string
orbyte[]
, depending on how the variable is used in the C code.ushort
, assumingunsigned short
produced by your C compiler is 16 bits. In C#,ushort
is always 16 bits (anduint
is always 32 bits). Congrats to MS for finally giving us some consistency here. :)要调用通过 DLLImport 公开的方法,您需要使用 IntPtr 类型作为指针。
请记住,在 C++ 中,char* 实际上是一个指向内存的指针,通常由 4 字节 int 表示。
To call a method exposed via an DLLImport, you'll want to use the IntPtr type for pointers.
Remember in C++ char* is actually a pointer to memory, usually represented by a 4 byte int.