C++ 的等价物C# 中的引用类型

发布于 2024-08-05 15:27:39 字数 151 浏览 2 评论 0原文

我在 C# 应用程序中使用用 C++ 编写的 dll。 的等价物是什么

  1. char const *
  2. unsigned Short

C# 中

I am using a dll written in C++ in a C# application.
What is the equivalent for

  1. char const *
  2. unsigned short

in C#

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

多像笑话 2024-08-12 15:27:39
  • 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 an IntPtr.

  • A unsigned short in C++ is usually a 16-bit unsigned integer: UInt16 (or ushort in C#).

屋顶上的小猫咪 2024-08-12 15:27:39

我查看了您问题的代码,我认为我的措辞更好(检查意图)。如果是这样,您正在寻找:

  1. stringbyte[],具体取决于变量在 C 代码中的使用方式。
  2. 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:

  1. Either string or byte[], depending on how the variable is used in the C code.
  2. ushort, assuming unsigned short produced by your C compiler is 16 bits. In C#, ushort is always 16 bits (and uint is always 32 bits). Congrats to MS for finally giving us some consistency here. :)
揽月 2024-08-12 15:27:39

要调用通过 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文