這VC6代碼:我有win32 DLL在VC6和調用C#參數字符*?
MCASMARTMANAGER_API int __stdcall reqeustKey_test(char* prKey)
{
Xhandeler.GetPrimaryKey(prKey);
return 0;
}
prKey = "AB472EDB9012"
而這個C#代碼:
[DllImport(McaSmartManagerDllPath, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)]
[return:MarshalAs(UnmanagedType.LPStr)]
public static extern string reqeustKey_test([MarshalAs(UnmanagedType.LPWStr), In, Out] string prKey);
var key_ = new string(' ', 17);
_strPrimaryKey = McaSmartNativeCommand.reqeustKey_test(key_);
運行時我就收到KEY_ { 'い㠶㐵䘷䘰䉆ㄴ㌰'}。我究竟做錯了什麼?
我認爲這應該是一個'LPStr',而不是'LPWStr'。另外...你怎麼從'int'編組返回值'string'?我認爲你的代碼應該使用'ref'作爲'string prKey'參數。 –