[英]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.