gpt4 book ai didi

c++ - 注册和使用 64 位 C++ 编写的 ATL 动态库时遇到问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:08:32 31 4
gpt4 key购买 nike

我在 Windows 7 x64 下注册和使用动态库时遇到问题,64 位版本的 dll 编译但编译器日志输出:

Error MSB3073: The command "RegSvr32 /S "...\x64\Debug\xxxxx.dll" exited with code 3.

但是,当我构建 32 位版本的 dll 时,编译器日志输出 RegSvr32 命令成功。

我已经在 x86 和 x64 构建配置中将 Linker >> General >> Register Output 设置为 No

我尝试使用 64 位 dll 运行 64 位和 32 位版本的 RegSvr32(无静默模式),但它响应以下错误:

The module "xxxxx.dll" failed to load. Make sure the binary is stored at the specified path or debug it to check for problems with the binary or dependent .DLL files. The specified module could not be found.

我使用 dependency walker 检查了它,它报告缺少 100 多个 dll,所以我不能在这里显示它们。其中一些是:

API-MS-WIN-CORE-COM-L1-1-1.DLL
API-MS-WIN-CORE-DATETIME-L1-1-1.DLL
API-MS-WIN-CORE-DEBUG-L1-1-1.DLL
API-MS-WIN-CORE-ERRORHANDLING-L1-1-1.DLL
API-MS-WIN-CORE-FILE-L1-2-1.DLL
...
WLANUTIL.DLL
WLDAP32.DLL
WTSAPI32.DLL
XMLLITE.DLL

打开 dll 的 Dependency Walker:

Dependency Walker with opened dll

我想知道只有64位版本的dll无法使用RegSvr32注册是什么原因。

非常感谢解决此问题的任何帮助。

更新 1

尝试使用此动态库运行应用程序会导致以下错误(32 位和 64 位版本):

The program can't start because api-ms-win-core-errorhandling-l1-1-1.dll is missing from your computer. Try reinstalling the program to fix this problem.

我目前安装的所有可再发行组件:

Redistributables those already installed

我必须安装任何 visual c++ 可再发行组件来解决这个问题吗?

更新 2

我找到了有关 api-ms-win-core-errorhandling-l1-1-1.dll 的更多信息 here并尝试将 WindowsApp.lib 与此动态库链接,但它甚至没有解决问题。

更新 3

我运行了系统文件检查器,它给出了我认为应该的以下输出:

Windows Resource Protection did not find any integrity violations.

最佳答案

  1. 进入您要注册的 DLL 的项目属性
  2. 转到配置属性 >> 调试
  3. 在“命令”下,单击小向下箭头并选择“regsvr32.exe”
  4. 在“命令参数”下键入“$(TargetName)”
  5. 在 DLLMain 的某处放置一个断点
  6. 现在调试 DLL(在解决方案资源管理器中右键单击 dll 项目并选择“调试”)

如果您到达 DLL main,您可以从那里进行调试,直到它失败。如果没有,您应该查看输出窗口以查看任何相关消息。您可能还需要更改输出窗口过滤器。右键单击输出窗口并检查所有类别的消息以确保它为您提供所有内容,然后再次调试。

这至少应该告诉您失败的地方。查找模块加载失败等

编辑添加 - 您可以尝试通过删除“/S”来更改构建步骤。这是“静默”模式,在这种情况下,您希望看到消息。

关于c++ - 注册和使用 64 位 C++ 编写的 ATL 动态库时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45719111/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com