C# 相当于C++;C中的引用类型# 我在C++应用中使用了C++编写的DLL。 等价物是什么 char const* unsigned short

C# 相当于C++;C中的引用类型# 我在C++应用中使用了C++编写的DLL。 等价物是什么 char const* unsigned short,c#,char,constants,C#,Char,Constants,在C中# 谢谢 < > >代码> C++中的char */CODE >可以有不同的含义,例如指向一个字节数组或一个ANSI编码的空终止字符串。因此,它取决于数据的含义,以及如何将值封送到C#。唯一肯定没有错的答案是:这是一个错误 < > >代码> C++中的无符号短< /COD>通常是一个16位无符号整数:(或 USTORACE//COD> C)。 我查看了你问题的代码,我认为我的措辞更好(检查意图)。如果是,您正在寻找: string或byte[],具体取决于变量在C代码中的使用方式 usho

在C中#

谢谢

    < > >代码> C++中的char */CODE >可以有不同的含义,例如指向一个字节数组或一个ANSI编码的空终止字符串。因此,它取决于数据的含义,以及如何将值封送到C#。唯一肯定没有错的答案是:这是一个错误

    < > >代码> C++中的无符号短< /COD>通常是一个16位无符号整数:(或<代码> USTORACE//COD> C)。


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

  • string
    byte[]
    ,具体取决于变量在C代码中的使用方式
  • ushort
    ,假设C编译器生成的
    unsigned short
    为16位。在C#中,
    ushort
    始终为16位(而
    uint
    始终为32位)。祝贺MS最终在这里给了我们一些一致性:
    要调用通过DLLImport公开的方法,您需要使用IntPtr类型作为指针


    <>记住C++中的char实际上是指向内存的指针,通常用4字节int表示。/P>Load EdLLLAPI API INTRALDADLL:::打开(conchch**PDEVICEPATH)<代码> PDEVICEPATS< /CUL>看起来它代表一个路径,它将是一个字符串。因此,我认为应该将其编组为
    LPStr
    :您通常不希望在编组中使用
    IntPtr
    ,除非您必须这样做(有时由编组程序强制执行,有时由C代码中的基本用法强制执行)-无论何时
    byte[]
    string
    工作它们更安全,更有意义