转换C ++字符串/ wchar_t的*到C#字符串? [英] Converting C++ string/wchar_t* to C# string?

查看:772
本文介绍了转换C ++字符串/ wchar_t的*到C#字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问:我需要从C ++的可执行文件调用C#DLL。
我使用COM和它的int,long和布尔工作正常。但我不能沿...

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:

Or if no ATL:

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

这篇关于转换C ++字符串/ wchar_t的*到C#字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆