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