2013-06-29 1 views
0

COt에 .tlh 파일의 get_Name 및 put_Name으로 표시되는 반환 형식 문자열 (또는 개체)이있는 속성이 있습니다. 이 액세스 및 관리되지 않는 C++이이 속성을 설정하는 방법. 지금까지 .. C# 쪽에서 이 속성은 DispId (1) 인터페이스를 통해 노출되어 있으며 인터페이스를 상속하는 클래스에서 구현되었습니다. I이 오류의 의미를 알고 왼쪽 피연산자 역할 :COM Interop을 사용하여 관리되지 않는 C++에서 C# 속성에 액세스

ManagedDLL::ICalculatorPtr pICalculator;//Interface having the property 
hr = pICalculator.CreateInstance(__uuidof(ManagedDLL::Calculator));//1. Calculator implements property of Icalculator & hr is of HRESULT type 
    pICalculator->put_Name="New1"; 
    pICalculator->put_Name="New2";//below error comes here : 

오류 C2659 : '=' C에서 ++ (단독 측) 는 I는 인터페이스 다음 구문 포인터를 만들었다. FYI : 내 Name 속성이 관리되지 않는 C++로 설정된 경우 C#에서 이벤트를 발생시키고 싶습니다.

답변

0

이 시도 :

pICalculator->put_Name(_TEXT("New1")); 

귀하의 C# 속성은 COM에서 가져온 후, 방법이되었다.

UPD. 이 샘플에서는 char*BSTR으로 변환하기 위해 _TEXT 매크로를 사용하지만 BSTR과의 거래를 훨씬 쉽게 만드는 유용한 형식 인 CComBSTR이 ATL에 포함되어 있습니다.

+0

나는 그것을 알고 있었다!. 그래서 나는 그것을 시도했다. 그러나 그것은 BSTR을 기대하고있다. char *를 BSTR로 변환하는 법을 가르쳐 주시겠습니까? 나는이 링크에도 갔다. 다양한 방법을 사용했지만 구현 중에는 헛된 것이었다. http://social.msdn.microsoft.com/Forums/vstudio/en-US/081d0d02-caa3-4700-9bef-7cbc248370af/visual-c-how-to-convert-const-char-to-bstr –

+0

대답. – Dennis

+0

_TEXT는 무엇을 대체하는 매크로인가? 확실하게 선언되지 않은 식별자를 오류로 보냅니다. 그렇습니까? COM에 새로 온 것입니다. –

관련 문제