编程语言
首页 > 编程语言> > 将C string / wchar_t *转换为C#字符串?

将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);

标签:c,string,com,com-interop,c-2
来源: https://codeday.me/bug/20191008/1873706.html