我有一个第三方COM对象(32位),我需要从我的c#应用程序(64位)调用.我知道我必须在一个单独的进程中运行COM对象.这个COM对象有很多类实现,所以我试图避免编写我自己的远程包装器暴露所有方法.COM +似乎是最直接的解决方案.我打开了"组件服务"菜单,创建了一个新的COM +应用程序,将我的COM对象作为组件添加到此应用程序中.一切似乎都很美妙.
在我的C#应用程序中,我添加了原始COM对象作为引用(自动生成类型库).使用类型库引用,我可以从COM +组件创建对象(我看到它们开始在组件服务窗口中旋转),但是当我尝试访问对象的方法时,我得到一个错误说接口没有注册.
有人有线索吗?我回去并在COM对象上运行了regsvr32,但我认为没有必要,并没有帮助.我在C#中的用法是否正确?VS2008自动完成没有问题看到这些方法.
确切的例外是:"未注册接口(HRESULT异常:0x80040155)"
我不清楚组件服务中的权限和角色究竟是什么,我尝试将COM +对象标识设置为在系统帐户下运行,既作为本地服务又作为交互式用户.我在角色中添加了Everyone作为用户.一切都在本地运行,所以不应该有文件权限或类似的问题.
我还想重申,这个COM对象包含许多类.我在客户端成功实例化了一个类对象并设置了一些属性值.我也成功实例化了另一个类对象,但在尝试调用第二个对象的方法时收到了这个异常....所以我认为我的COM对象注册的注册表存在问题.