c#代码-
字符串 s="おはよう";
我想将 s 作为 wstring 发送到 c++ dll。
如何在 c# 中将字符串转换为 wstring?
c#代码-
字符串 s="おはよう";
我想将 s 作为 wstring 发送到 c++ dll。
如何在 c# 中将字符串转换为 wstring?
Astd::wstring
是一个 C++ 对象,由 C++ 运行时分配并具有依赖于实现的内部格式。您也许能够弄清楚如何在 C# 程序中创建其中一个并将其传递给非托管 C++ 代码,但这样做会有些困难并且充满危险。因为 a 的内部结构std::wstring
依赖于实现,所以对 C++ 编译器或运行时库的任何更改都会破坏您的解决方案。
您尝试做的通常是通过在 C++ 中编写一个接口层来完成,该接口层接受一个LPTStr
参数,将其转换为 a std::wstring
,然后调用您想要调用的 C++ 函数。也就是说,如果您要调用的函数声明为:
int Foo(std::wstring p);
您将编写一个接口函数:
int FooCaller(LPTSTR p)
{
std::wstring str = p;
return Foo(str);
}
你FooCaller
从你的 C# 程序中调用。
简而言之,C# 无法创建和传递 a std::wstring
,因此您使用翻译层。