パラメータの文字列値を設定するために必要なネイティブ dll があります。以下は、C++ メソッドのシグネチャです。
__declspec(dllexport) void __stdcall getDetails(_Out_ LPTSTR lpDetails, _In_ UINT uSize)
c++ メソッド
リターン 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# にあり、私が今まで目にしたのは空の文字列だけです。
他の投稿から見つけたものを試しましたが、今のところうまくいきません。