我有一个使用 C++ COM 对象的 C# 应用程序,两者都构建在 32 位计算机上。现在我必须在 64 位机器上运行它们。我注册了COM对象。在计算机 \hkey_classes_root\wow6432node\clsid{xxx} 下的寄存器中创建了相应的条目。
但是,当我尝试运行该应用程序时,它显示“由于以下错误,检索具有 CLSID {xxx} 的组件的 COM 类工厂失败:80040154。”。据我了解,错误代码意味着该类未注册。
请帮忙!!!
谢谢
上面第一个答案是正确答案。如果引用 32 位 COM 组件,则无法在 64 位 Windows 上运行 CPU ANY 目标应用程序。它不会加载。
发生的情况是,JIT 发现 CPU ANY 并将您的应用程序升级到 64 位。但是 com 控件没有 64 位版本,因此您会收到未注册错误。
对于使用 Microsoft Access 作为数据库的人来说,这是一个大问题。 Access 没有 64 位版本,因此当他们看到错误时,他们认为需要 64 位运行时(不存在)。您必须将应用程序标记为 32 位才能使用 Access 运行时。
这是一个糟糕的选择(恕我直言)——找到一个更好的 64 位版本组件,或者使用 100% 托管代码。
我不喜欢每个标签应用程序都只支持 32 位,除非它们真的需要它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)