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: '=' : 左オペランドとして機能し ます このエラーの意味はわかっています。参考: Name プロパティがアンマネージ C++ で設定されている場合、C# でイベントを発生させたいと考えています。

4

1 に答える 1

0

これを試して:

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

COM からインポートした後、C# プロパティはメソッドになりました。

UPD。このサンプルでは_TEXTマクロを使用して から に変換しchar*ていますが、ATL にはBSTR便利な型もあり、取引がはるかに簡単になります。CComBSTRBSTR

于 2013-06-29T06:06:42.307 に答える