我正在尝试使用EXE公开的COM函数。我使用Visual Studio 2010(在windows7/x64计算机上)创建了一个C#项目,并添加了对该EXE的引用,然后将"独立"标志设置为true。当我构建解决方案时,它公开的每个类都会出现错误。
隔离COM引用"FNCClient11Lib"时出现问题:注册表钥匙'HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID{e49b30c9-6d7e-48f5-91da-f2f0414c6a13}\InProcServer32'缺少值"(默认值)"。
这些条目不存在于该位置的注册表中,但确实存在于此处(下方)
HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID{E49B30C9-6D7E-48F5-91DA-F2F0414C6A13}
- 在构建时,有什么方法可以将其指向注册表中的正确位置吗
- 我可以引用EXE吗?到目前为止,我看到的所有示例都只引用DLL
当类型库包含在COM接口中标记为"不可复制"的类时,就会出现此问题。您可以使用OLE/COM查看器(作为管理员)进行检查,导航到导致问题的类型库,打开它并查找CoClass定义。如果使用报告的uuid的类被声明为"不可复制",那么你就得到了它。此外,在VS对象浏览器中,这些类不会在接口中公开构造函数。
我的解决方案是用这些类的公共构造函数重建COM组件,但当然,这只有在您有源代码的情况下才有可能。
最后,这种症状可能还有其他原因。。。