我有一个使用C++ COM对象和C#应用程序,两者都是在32位机器上构建的。现在我需要在64位机器上运行它们。我已经注册了COM对象,在计算机 \ hkey_classes_root \ wow6432node \ clsid {xxx} 下创建了相应的条目。
然而,当我尝试运行应用程序时,它显示“检索组件CLSID {xxx}的COM类工厂失败,原因是以下错误:80040154。”。据我所知,该错误代码意味着该类未注册。
请帮助我!!!
谢谢
x86
。.NET运行时自动以64位运行应用程序,因此无法将32位COM组件加载到其进程中。
如果COM组件具有自动化兼容接口,则非常容易解决。创建一个COM+应用程序(控制面板->管理工具->组件服务),并将组件添加到其中。这样,您将强制在单独的进程中创建组件,并且不再需要担心客户端应用程序作为64位应用程序运行。
我认为你不能在64位机器上本地运行32位应用程序。你需要将应用程序编译为64位二进制文件或在模拟器下运行它(例如Windows上的WOW64)。如果你的应用程序(构建在64位二进制文件中)使用任何外部dll,你还需要所有这些dll的64位版本。
这是一个很好的参考:
http://searchwindowsserver.techtarget.com/tip/0,289483,sid68_gci1220022,00.html
编辑:
如果您进入项目属性 -> 构建,将平台目标从“任何 CPU”更改为 X86。看看这是否有帮助。
或者您需要注册您的 DLL:http://riteshk.blogspot.com/2007/05/retrieving-com-class-factory-failed-due.html