我有一个我编写的C ++ DLL,该DLL无法在64位计算机上注册。请注意32位计算机上的DLL寄存器的32位版本。
我们在发布模式下使用Visual Studio 2010在64位Windows 7计算机上构建DLL,并以x64平台为目标。我想在64位Windows 10计算机(目标)上安装DLL。目标计算机安装了针对64位的VS 2010 Redist。当我尝试使用以下方式注册程序时:
C:\ windows \ system32 \ regsvr32.exe
失败,并说程序“可能与您正在运行的此版本的Windows不兼容。请检查该模块是否与regsvr32的x86(32位)或x64(64位)版本兼容。 .exe”。
我使用了一个名为Dependencies的程序,该程序试图弄清楚DLL需要什么依赖关系。依赖关系说,我的DLL需要ATL100.dll。但是,它是由VS 2010 redist安装的,并且确实位于C:\ windows \ system32中。 DLL本身不依赖任何第三方程序。
有人对下一步要注册该文件有什么想法吗?
答案 0 :(得分:1)
我知道了。我必须卸载64位和32位VS 2010 redist。从C:\ windows \ system32和syswow64目录中删除ATL100.dll,然后重新启动计算机。重新启动后,我重新安装了两个redist安装程序。然后,我可以从管理命令提示符下注册文件。
也许我们安装的东西安装了ATL100.dll文件,而当我安装64位Redist时,它没有覆盖ATL100.dll。保留已过时的版本。