アンマネージ C++ dll を呼び出す C# GUI があります。コールバックは dll -> gui メッセージングに使用されます。
dll で、'\0' 文字を含む可能性のある LPTSTR が作成されます。その文字列は、コールバック パラメータを介して GUI に完全に戻す必要があります。
残念ながら、null 文字までは GUI に渡された文字列しか取得できません。マーシャリングが文字列をカットしているようです。
// C# callback declarations
public delegate bool callbackDelegate(int iEvent, [MarshalAs(UnmanagedType.LPWStr)] string SomeString);
private callbackDelegate callbackDelegateInstance;
// instantiating and calling the callback in C#
callbackDelegateInstance = new callbackDelegate(CallbackHandler);
DLLCallbackFunction(callbackDelegateInstance);
// C# callback handler
private bool CallbackHandler(int iEvent, [MarshalAs(UnmanagedType.LPWStr)] string SomeString)
{
// SomeString only contains characters up until the null char
}
dll からの null 文字を含む文字列全体を返す方法はありますか?
dll と gui コードにアクセスできます。