在c#和c++/CLI之间传递_bstr_t

本文关键字:bstr 之间 CLI c++ | 更新日期: 2023-09-27 18:29:03

我有点困惑,我们是否可以使用_bstr_t在c#到c++之间传递字符串,反之亦然。

我使用C++/CLI作为C#和C++之间的中间层。

如果可能的话,还可以举例说明如何在C#端和C++/CLI端封送它,因为关于的文档不多

还建议使用更好的数据类型/机制来传递字符串。

在c#和c++/CLI之间传递_bstr_t

根据MSDN,这个应该可以将String^转换为字符串(这是迄今为止最简单的方法)。然而,我无法测试,我的VC++2008 Express没有找到Marshal.h…

// TestCppCli2008.cpp : main project file.
#include "stdafx.h"
#include <string>
#include <msclr'marshal.h>
#include <msclr'marshal_cppstd.h>
using namespace System;
using namespace msclr::interop;
int main()
{
    System::String^ s = L"Hello World";
    std::string str = marshal_as<std::string>(s);
    return 0;
}