【发布时间】:2020-03-21 06:05:39
【问题描述】:
我试图弄清楚如何将字符串值从 C++/CLI 方法返回给调用它的非托管 C++。在我当前的实现中,我有一个字符串存储在(托管)C++/CLI 方法中的本地 String ^ 变量中,我希望该方法返回给调用它的非托管 C++ 程序。如果使用 String ^ 变量不是一个好的选择,那么哪种构造/类型会更好?请注意,我省略了 C# 方法将字符串值返回给 C++/CLI 方法的部分,因为这不是问题。
我正在使用 VS2017。
代码示例 - 为简单起见,代码已减少。
非托管 C++ ------------------
_declspec(dllexport) void GetMyString();
int main()
{
GetMyString();
}
(托管)C++/CLI -------------------------
__declspec(dllexport) String GetMyString()
{
String ^ sValue = "Return this string";
return (sValue);
}
非常感谢任何帮助。提前谢谢。
【问题讨论】:
-
我认为你不能在非托管 c++ 中使用
String^。使用std::string或std::wstring。可能您必须在 c++/cli 中将String^转换为标准字符串。
标签: c# c++ unmanaged managed bridge