我有一个最初为 x86 构建的 C++ ATL COM DLL,为 x86 构建的 .NET 4.0 应用程序正在使用 dll,一切正常。
为 x64 重新编译 COM dll,然后使用注册它c:\windows\system32\regsvr32
(在取消注册 x86 dll 之后),我无法在 Visual Studio 添加引用窗口中看到 COM DLL,我导出了 HKCR 和 HKLM\Softwares 的注册密钥使用 x64 和 x86 版本的 dll 注册,并且没有丢失任何键,相应的键都指向正确的 dll 位置。
此外,在注册 x64 dll 后,我可以通过导航到文件所在的文件夹并选择它来添加对 dll 的引用,但它仍然无法执行(.net 程序集设置为 x64)并出现以下错误
System.Runtime.InteropServices.COMException (0x80040154):检索具有 CLSID {00000000-0000-0000-0000-A797AD238051} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(来自 HRESULT 的异常:0x80040154( REGDB_E_CLASS NOTREG))。在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolea n noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurity Check)在 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,Boolean skipCheckThis,Boolean fillCache)在 System.RuntimeType.CreateInstanceDefaultCtor (布尔 publicOnly,布尔 skipVisibilityChecks,布尔 skipCheckThis,布尔 fillCache)在 System.Activator.CreateInstance(类型类型,布尔非公共)
我花了相当多的时间在网上搜索,但没有找到任何远程接近的东西,有人见过这样的东西,或者我可以使用的任何调试工具?
顺便说一句,我不拥有 dll,拥有它的人可以在机器上看到 x64 dll,但在其他 2 台机器上尝试过,但在任何一台机器上都不起作用。