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

时间:2010-04-01 16:25:03

标签: c# c++ string com com-interop

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

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

有人知道怎么回事,或者出现什么问题?

1 个答案:

答案 0 :(得分:2)

如果你正在使用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);