0

我有一个返回类型为字符串(甚至是对象)的属性,它在 .tlh 文件中作为 get_Name 和 put_Name 暴露在 COm 中。如何在非托管 c++ 中访问并设置此属性。直到现在.. 在 C# 方面,我通过 DispId(1) 的接口公开了这个属性,并在继承该接口的类中实现了它。在 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 :

error C2659: '=' : function as left operand 我知道这个错误的含义。仅供参考:当我的 Name 属性在非托管 c++ 中设置时,我想在 c# 中引发一个事件。

4

1 回答 1

0

尝试这个:

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

从 COM 导入后,您的 C# 属性变成了方法。

升级版。该示例使用_TEXT宏将 from 转换char*BSTR,但CComBSTRATL 中也有有用的类型,这使得处理BSTR更加容易。

于 2013-06-29T06:06:42.307 回答