本文介绍了将C ++ string / wchar_t *转换为C#string?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问题:我需要从C ++可执行文件调用C#dll。
我使用COM,它适用于int,long和bool。但我不能得到一个字符串...
Question: I need to call a C# dll from a C++ executable.I use COM, and it works fine for int, long and bool. But I can't get a string along...
IDL文件说它是一个BSTR,但我不能正确传递,也不检索一个。
我试着使用wchar_t *和使用sysalloc像我做VB6,但是似乎不工作。
The IDL file says it's a BSTR, but I can't pass it correctly, and neither retrieve one.I tried using wchar_t* and using sysalloc as I did with VB6, but that doesn't seem to work.
任何人都知道如何,或什么可能错误?
Anybody knows how, or what might be wrong ?
推荐答案
如果您使用的是ATL,您可以这样做:
If you're using ATL you can do this:
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 / wchar_t *转换为C#string?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!