如何在Windows 7上使用TLBIMP包装器引用和访问专有COM组件

时间:2012-08-15 20:19:32

标签: c# windows-7 com tlbimp

我使用TLBIMP.EXE为商业闭源程序创建了一个包装器。 (Visual Studio不能直接引用该程序,尽管它可以在VB6中引用。)VS引用包装器就好了,并且能够创建一个对象。但是,只要在对象上调用方法,就会出现以下错误:

  

{“无法将'InfoWorksLib.InfoWorksClass'类型的COM对象转换为   接口类型'InfoWorksLib.IIW'。此操作失败,因为   QueryInterface在具有IID的接口的COM组件上调用   '{61305DAA-3868-41AD-956D-081010E80E8B}'因以下原因失败   错误:不支持此类接口(HRESULT异常:0x80004002   (E_NOINTERFACE))。“}

我的代码如下所示:

void Function()
{
  InfoWorksLib.IIW iw = new InfoWorksLib.InfoWorksClass(); // Works
  iw.InitForTest(0, "", ""); // crashes with the above exception
}

我已尝试过所有可能的声明和创作组合(例如InfoWorks iw = new InfoWorksClass()等)

VS中的对象资源管理器显示以下内容:

InfoWorksLib
    InfoWorksLib
        EIWErrors
        IIW (interface)
        InfoWorks (interface)
            Base Types (folder)
                IIW (interface)
        InfoWorksClass
            Base Types (folder)
                IIW
                InfoWorks
                    IIW
                Object

这是在Windows 7上。在Windows XP虚拟机上,相同的代码可以正常工作。

Windows 7上是否存在可能导致上述异常的安全问题?包装程序集是否需要位于非系统目录中?

0 个答案:

没有答案
相关问题