我有一个调用非托管 C++ dll 的 C# gui。回调用于 dll -> gui 消息传递。
在 dll 中创建了一个可能包含“\0”字符的 LPTSTR。该字符串需要通过回调参数完整地通过回调传递回gui。
不幸的是,我只能将字符串传递给 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 的空字符?
我确实可以访问 dll 和 gui 代码。