我有一个生成值的C++ plus方法。我从一个C#应用程序调用这个方法。
C++的方法是这样的:char *在托管代码中?
extern "C" REGISTRATION_API char * generate(char dIn[],char dOut[])
的generate
方法返回字符数组(sOut[]=returnvalue; return sOut;
)
现在我从我的C#应用程序调用该方法:
[DllImport("mydll.dll")]
static extern string generate(string sIn, string sOut);
如你所见,c#中的返回类型是string
。发生的事情是,c#中的返回值不正确,并且已损坏。 (该值是generate
方法中是正确的,但每当我把它从C#中提取它,我得到一些错误的值。)
那是正确的,我在C#方法有string
返回值,而在C++中,它是一个char*
? 请分享您的意见,这是紧急的,谢谢。
你'char *'实际上代表一个字符串(ANSI/Unicode?)还是一个字节序列?如果是字符串,请使用StringBuilder,否则请在'static extern'声明中使用byte []。 – dtb 2010-07-06 15:42:50