2010-04-01 3 views
2

질문 : C++ 실행 파일에서 C# dll을 호출해야합니다. 저는 COM을 사용합니다. int, long 및 bool에서는 잘 작동합니다. 하지만 함께 문자열을 얻을 수 없다 ...C++ 문자열/wchar_t *을 C# 문자열로 변환 하시겠습니까?

IDL 파일은 BSTR이라고 말하지만 올바르게 전달할 수는 없으며 하나도 가져올 수 없습니다. VB6에서 한 것처럼 wchar_t * 및 sysalloc을 사용하여 시도했지만 작동하지 않는 것 같습니다.

아무도 모르는가, 또는 무엇이 잘못되었을 수 있습니까?

std::string theString = "hello"; 
CComBSTR bstr(theString.c_str()); 
DoSomething(bstr); // Function that takes a BSTR as an argument 

을 또는 아니오 ATL 경우 : 당신이 ATL을 사용하는 경우

+1

'의 wchar_t의 *'에서 이동'SysAllocString'를 사용하여'BSTR'에 확실히 올바른 경로입니다. 이 작업을 수행 할 때 잘못된 점에 대해 자세히 설명해 주시겠습니까? 컴파일 오류, 런타임 예외 등 ... – JaredPar

+0

C#에서 아무 것도 얻지 못하고 질문 표시 만 나타납니다. –

답변

2

이 작업을 수행 할 수 있습니다

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

쿨, 작동. SysAlloc 대신 SysAllocString ;-) –

관련 문제