我有一个本机 dll,我需要设置参数的字符串值。下面是 C++ 方法签名
__declspec(dllexport) void __stdcall getDetails(_Out_ LPTSTR lpDetails, _In_ UINT uSize)
c++方法
我已经为 return lpDetails=L"test"; 硬编码了这个。
我的 c# 签名
[return: MarshalAs(UnmanagedType.I1)]
[DllImport("test.dll",CharSet=CharSet.Auto)]
static extern bool getDetails(StringBuilder result, System.UInt32 uSize);
c# 代码
StringBuilder b = new StringBuilder(1000);
getDetails(b, 255);
m = b.ToString(); //always ""
Console.WriteLine(m);
当我单步执行代码时,我看到值 (lpDetails) 被设置为正确的值。问题出在 c# 上,我所看到的只是一个空字符串。
我尝试了从其他帖子中找到的东西,但到目前为止还没有运气。