2013-06-29 29 views
0

我有一個返回類型爲字符串(甚至是對象)的屬性,該屬性暴露在COm中,作爲get_Name和put_Name放入.tlh文件中。如何訪問它並在非託管C++中設置此屬性。 直到現在.. 在C#方面, 我有這個屬性暴露通過與DispId(1)的接口,並在繼承該接口的類中實現它。 在C++(非託管側) 我創建使用以下語法一個接口指針:使用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:「=」:功能作爲左操作數 我知道這個錯誤的意思。 僅供參考:當我的Name屬性設置爲非託管C++時,我想在c#中引發一個事件。

回答

0

試試這個:

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

你的C#的屬性變成了方法,從COM導入後。

UPD。 該示例使用_TEXT宏將char*轉換爲BSTR,但在ATL中也有用的CComBSTR類型,這使得BSTR的處理更容易。

+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的新手。 –