2
通常要創建COM接口,應該在IDL文件中聲明它。在我的工作項目,我有一個COM接口在C * .h文件中聲明++:在C++中聲明的COM接口
struct DECLSPEC_UUID("A67177F7-A4DD-4A80-8EE1-25CF12172068") ISomeService : public IUnknown
{
virtual ~ISomeService() {}
virtual HRESULT Initialize(const Settings& settings) = 0;
// ...
};
此外,該方法初始化需要包含的std :: string領域作爲其參數結構。 相應的COM類在C++中實現,並從另一個C++模塊中使用。 這工作正常,直到我運行AppVerifier下的代碼。它會導致訪問衝突異常發生。
所以我的問題是
- 那麼,是否可以申報有時COM接口中的* .h文件?
- 如果是,是否將C++類型指定爲COM接口方法的參數是正確的?或者我應該總是在這種情況下使用符合COM的類型(BSTR等)?
我從來沒有見過只在.h文件中定義的COM接口。 CoClass的定義在哪裏?無論如何,如果你正在使用一個自定義類,COM應該知道這個類,以便它可以編組這個類,以便數據正確地從調用者傳遞到被調用的方法。請參閱此鏈接中的第5.5節(http://progtutorials.tripod.com/COM.htm)瞭解如何實現此目的。 – PermanentGuest
@Unni:爲什麼要有* coclass?這是一個接口。 –