簡體   English   中英

我的第一個COM導入

[英]My first COM import

我有一個帶有以下聲明的.h文件:

////////////////////////////////////////////////////////////////////////////////
// Syntek Plug-In Custom Control GUIDs.                                       //
////////////////////////////////////////////////////////////////////////////////
// {59DF6360-6F14-4472-82B6-6EAB971EEFAD}
DEFINE_GUID(CLSID_IStkCustomControl,
            0x59DF6360, 0x6F14, 0x4472, 0x82, 0xB6, 0x6E, 0xAB, 0x97, 0x1E, 0xEF, 0xAD);

// {59DF6361-6F14-4472-82B6-6EAB971EEFAD}
DEFINE_GUID(CLSID_IStkCustomControl_PropertyPage,
            0x59DF6361, 0x6F14, 0x4472, 0x82, 0xB6, 0x6E, 0xAB, 0x97, 0x1E, 0xEF, 0xAD);

// Custom Control Interfaces.
MIDL_INTERFACE("59DF6360-6F14-4472-82B6-6EAB971EEFAD")
IStkCustomControl : public IUnknown
{
public:
    virtual HRESULT STDMETHODCALLTYPE Get(PKSPROPERTY_STK_CUSTOM_CONTROL_S pStkCustomControl) = 0;
    virtual HRESULT STDMETHODCALLTYPE Set(PKSPROPERTY_STK_CUSTOM_CONTROL_S pStkCustomControl) = 0;
};

我想將接口IStkCustomControl到C#。 到目前為止,我有這個C#代碼:

Guid guid = new Guid(0x59df6360, 0x6f14, 0x4472, 0x82, 0xb6, 0x6e, 0xab, 0x97, 0x1e, 0xef, 0xad);
Type type = Type.GetTypeFromCLSID(guid); // line 2 
object obj = Activator.CreateInstance(type);

執行第2行時,我得到了異常

由於以下錯誤,從IClassFactory創建具有CLSID {59DF6360-6F14-4472-82B6-6EAB971EEFAD}的COM組件實例失敗:80040202。

這里出了什么問題?

更新:我發現IStkCustomControl接口是在一個名為StkProp.ax的文件中StkProp.ax 我試過運行AxImp.exe StkProp.ax ,但這給了我

AxImp錯誤:加載類型庫/ DLL時出錯。 (來自HRESULT的異常:0x80029C4A(TYPE_E_CANTLOADLIBRARY))

通常,類型信息嵌入在實現該對象的DLL中。 使用OLEView確保。 如果是,則設置對該DLL的COM引用並使用自動包裝器。

將類型信息作為獨立的TLB文件是九十年代末。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM