1

我有一个我编写的 C++ 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.exe 的 x86(32 位)或 x64(64 位)版本兼容” .

我使用名为 Dependencies 的程序试图找出 DLL 需要哪些依赖项。依赖项说我的 DLL 需要 ATL100.dll。但是,这是由 VS 2010 redist 安装的,并且确实位于 C:\windows\system32 中。DLL 本身不依赖于任何第三方程序。

有没有人知道接下来要寻找什么来注册这个文件?

4

1 回答 1

2

我想到了。我不得不卸载 64 位和 32 位 VS 2010 redist 。从 C:\windows\system32 和 syswow64 目录中删除 ATL100.dll 并重新启动计算机。重新启动后,我重新安装了两个 redist 安装程序。然后我能够从管理命令提示符注册文件。

也许我们安装的东西安装了 ATL100.dll 文件,当我安装 64 位 redist 时,它并没有覆盖 ATL100.dll。留下安装过时的版本。

于 2018-10-03T20:48:04.860 回答