加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 我的第一个COM导入

发布时间:2020-12-15 21:22:33 所属栏目:百科 来源:网络整理
导读:我有一个带有以下声明的.h文件: ////////////////////////////////////////////////////////////////////////////////// Syntek Plug-In Custom Control GUIDs. //////////////////////////////////////////////////////////////////////////////////// {59
我有一个带有以下声明的.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,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,0xb6,0x6e,0xab,0x1e,0xef,0xad);
Type type = Type.GetTypeFromCLSID(guid); // line 2 
object obj = Activator.CreateInstance(type);

执行第2行时,我得到了异常

Creating an instance of the COM component with CLSID
{59DF6360-6F14-4472-82B6-6EAB971EEFAD} from the IClassFactory failed
due to the following error: 80040202.

这里出了什么问题?

更新:我发现IStkCustomControl接口是在一个名为StkProp.ax的文件中实现的.我试过运行AxImp.exe StkProp.ax,但这给了我

AxImp Error: Error loading type library/DLL. (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))

解决方法

通常,类型信息嵌入在实现该对象的DLL中.使用OLEView确保.如果是,则设置对该DLL的COM引用并使用自动包装器.

将类型信息作为独立的TLB文件是九十年代末.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读