将C ++ string / wchar_t *转换为C#字符串?

问题:我需要从C ++可执行文件中调用C#dll。 我使用COM,它适用于int,long和bool。 但我不能得到一个字符串……

IDL文件说它是BSTR,但是我无法正确传递它,也没有检索到它。 我尝试使用wchar_t *并像使用VB6一样使用sysalloc,但这似乎不起作用。

有谁知道怎么回事?

如果你使用的是ATL,你可以这样做:

 std::string theString = "hello"; CComBSTR bstr(theString.c_str()); DoSomething(bstr); // Function that takes a BSTR as an argument 

或者如果没有ATL:

 const wchar_t* theString = L"hello"; BSTR bstr = SysAllocString(theString); DoSomething(bstr); SysFreeString(bstr);