我的 C++/CLI 项目中有一些本机函数和一个将它们公开给 C# 项目的 ref(托管)类。
它公开的函数之一返回一个WCHAR*
字符串 (AKA LPWSTR
/ wchar_t*
)。
当我运行打印它的 C# 程序时,我只能看到方形符号。
我在本机返回语句处设置了一个断点,调试器显示返回的字符串是正确的。然后我跨过一次并进入托管函数(它有一个WCHAR*
设置为返回值的变量),它以某种方式显示了那些方形符号。
似乎一旦字符串进入托管“部分”,它就会变得混乱。
我会展示我的代码,但问题发生在我什至将WCHAR*
字符串转换为之前,System::String
所以这并不重要。
根据要求的代码示例:
static String^ GetWindowTitle(IntPtr windowHandle)
{
HWND hWnd = (HWND)windowHandle.ToPointer();
LPWSTR nativeTitle = NativeGetWindowTitle(hWnd).get();
String^ title = gcnew String(nativeTitle);
return title;
}