c#代码-

string s="おはよう";

我想将 s 发送到 c++ dll,作为 wstring..
如何在c#中将字符串转换为wstring?

最佳答案

std::wstring 是一个 C++ 对象,由 C++ 运行时分配并具有依赖于实现的内部格式。您也许能够弄清楚如何在 C# 程序中创建其中之一并将其传递给非托管 C++ 代码,但这样做会有些困难并且充满危险。由于 std::wstring 的内部结构依赖于实现,因此对 C++ 编译器或运行时库的任何更改都会破坏您的解决方案。

您尝试做的通常是通过在 C++ 中编写一个接口(interface)层来完成,该层采用 LPTStr 参数,将其转换为 std::wstring ,然后调用您想要调用的 C++ 函数。也就是说,如果您要调用的函数声明为:

int Foo(std::wstring p);

你会写一个接口(interface)函数:
int FooCaller(LPTSTR p)
{
    std::wstring str = p;
    return Foo(str);
}

然后从 C# 程序调用 FooCaller

简而言之,C# 无法创建和传递 std::wstring ,因此您使用翻译层。

关于string - 时间:2019-05-06 标签:c#: how to convert c# string to c++ wstring and vice-versa,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10618667/

10-13 03:13