基于Qt的ActiveX在x86平台目标中运行良好但在x64中运行不正常?

时间:2014-12-14 08:59:29

标签: c# qt activex

我使用基于 Qt 的项目创建了一个ActiveX,以便在 C#中使用它,现在我可以在 32位应用程序中使用此对象< / strong>,但是当我选择 x64 平台目标时,我的C#项目在此错误开始时停止工作: enter image description here

我使用32位平台目标编译了activeX dll,因为如果我使用64位平台目标编译它,我甚至无法注册它!

1 个答案:

答案 0 :(得分:1)

如果您在设计时未使用ActiveX组件,则可以使用dll Surrogates执行此操作。您必须使用一些注册表项才能使其正常工作。如果你的ActiveX DLL依赖于其他ActiveX组件,那么你也需要替代它们。

在注册表中,

  1. 转到HKEY_CLASSES_ROOT/Wow6432Node/CLSID/{xxxx-xxxx-xxxx-xxxx},其中xxxx-xxxx-xxxx-xxxx是ActiveX组件的GUID。

  2. 添加REG_SZ(字符串)值,名称应为AppID,且数据应为相同的COM对象GUID {xxxx-xxxx-xxxx-xxxx}。

  3. HKEY_CLASSES_ROOT/Wow6432Node/AppID下添加密钥。密钥应与COM对象GUID {xxxx-xxxx-xxxx-xxxx}相同。

  4. 添加REG_SZ(字符串)值,并将其命名为DllSurrogate。将值保留为空。

  5. 如果不存在,请在HKEY_LOCAL_MACHINE/Software/Classes/AppID下创建一个密钥。密钥应命名为COM对象的GUID {xxxx-xxxx-xxxx-xxxx}。

  6. 如果这没有用,请谷歌搜索dll代理。

  7. Help Image from thrysoee.dk 来自http://thrysoee.dk/InsideCOM+/F12qi01x.htm

    的图片

    如需更多帮助,请访问http://thrysoee.dk/InsideCOM+/ch12b.htm