Преобразование строки C ++ / wchar_t * в строку C #? - PullRequest
2 голосов
/ 01 апреля 2010

Вопрос: мне нужно вызвать C # dll из исполняемого файла C ++. Я использую COM, и он отлично работает для int, long и bool. Но я не могу привести в порядок ...

Файл IDL говорит, что это BSTR, но я не могу передать его правильно и не могу получить ни одного. Я попытался использовать wchar_t * и использовать sysalloc, как я это делал с VB6, но, похоже, это не работает.

Кто-нибудь знает как, или что может быть не так?

1 Ответ

2 голосов
/ 02 апреля 2010

Если вы используете 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);
...