2009-09-17 49 views

回答

5
  • 在C++甲char*可以有不同的含义,例如指向字节数组的指针或ANSI编码的以null结尾的字符串。所以它取决于数据的意义如何将值封送到C#。唯一答案肯定没有错的是:这是一个IntPtr

  • A unsigned short在C++中通常是一个16位无符号整数:UInt16(或在C#中的ushort)。

+0

LOADERDLL_API INT CLoaderDLL ::打开(为const char * pDevicePath) – Khayralla 2009-09-17 18:33:51

+0

'pDevicePath'看起来它代表了这将是一个字符串的路径。所以我相信这应该被编为'LPStr':http://msdn.microsoft.com/en-us/library/s9ts558h.aspx – dtb 2009-09-17 18:40:04

2

我看着你的问题和代码我想我得到了它的措辞更好(检查的意图)。如果是这样,你正在寻找:

  1. 无论stringbyte[],根据变量如何在C代码中使用。
  2. ushort,假设unsigned short由您的C编译器生成的是16位。在C#中,ushort总是16位(并且uint总是32位)。祝贺MS最终在这里给予我们一些一致性。 :)
0

要调用通过DLLImport公开的方法,您将要使用指针的IntPtr类型。

在C++中记住char *实际上是指向内存的指针,通常由4字节的int表示。

+1

你经常不想在你的编组中使用'IntPtr',除非你有(有时由编码器强加,有时由C代码中的基础用法强加) - 只要'byte []'或'string'工作,它们就更安全并且具有更多的含义。 – 2009-09-17 18:34:18

+0

我不知道。谢谢。 – Alan 2009-09-17 19:38:18