问题:我需要从C ++可执行文件中调用C#dll。 我使用COM,它适用于int,long和bool。但我不能得到一个字符串...
IDL文件说它是BSTR,但我无法正确传递,也无法检索。 我尝试使用wchar_t *并像使用VB6一样使用sysalloc,但这似乎不起作用。
有人知道怎么回事,或者出现什么问题?
答案 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);