我使用基于 Qt 的项目创建了一个ActiveX,以便在 C#中使用它,现在我可以在 32位应用程序中使用此对象< / strong>,但是当我选择 x64 平台目标时,我的C#项目在此错误开始时停止工作:
我使用32位平台目标编译了activeX dll,因为如果我使用64位平台目标编译它,我甚至无法注册它!
答案 0 :(得分:1)
如果您在设计时未使用ActiveX组件,则可以使用dll Surrogates
执行此操作。您必须使用一些注册表项才能使其正常工作。如果你的ActiveX DLL依赖于其他ActiveX组件,那么你也需要替代它们。
在注册表中,
转到HKEY_CLASSES_ROOT/Wow6432Node/CLSID/{xxxx-xxxx-xxxx-xxxx}
,其中xxxx-xxxx-xxxx-xxxx是ActiveX组件的GUID。
添加REG_SZ
(字符串)值,名称应为AppID
,且数据应为相同的COM对象GUID {xxxx-xxxx-xxxx-xxxx}。
在HKEY_CLASSES_ROOT/Wow6432Node/AppID
下添加密钥。密钥应与COM对象GUID {xxxx-xxxx-xxxx-xxxx}相同。
添加REG_SZ
(字符串)值,并将其命名为DllSurrogate
。将值保留为空。
如果不存在,请在HKEY_LOCAL_MACHINE/Software/Classes/AppID
下创建一个密钥。密钥应命名为COM对象的GUID {xxxx-xxxx-xxxx-xxxx}。
如果这没有用,请谷歌搜索dll代理。
来自http://thrysoee.dk/InsideCOM+/F12qi01x.htm
的图片如需更多帮助,请访问http://thrysoee.dk/InsideCOM+/ch12b.htm