我有一個生成值的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