奇怪的 dll 链接依赖性导致“错误 0xc000007b”

问题描述 投票:0回答:1

我正在开发一个win32应用程序,在运行调试引导应用程序时遇到错误0xc000007b的问题。我搜索了有关该错误的信息,发现可能是 x64 或 x86 不匹配问题。

但是在我的项目中,没有需要手动复制的外部dll(这是此错误最常见的情况),当我深入了解细节时,我发现我的exe有奇怪的deps堆栈。

标出的蓝色文件是由项目生成的,在 DependencyGUI 中是 amd64 ,当只看蓝色的 dll 文件(屏幕截图的右侧部分)时,似乎没问题。但是,当我检查链接蓝色 dll 的 exe 文件(屏幕截图左侧的红色轮廓)时,该 dll 更改为依赖于文件

C:\WINDOWS\WinSxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.3636_none_a863d714867441db\comctl32.dll
,并且它被标记为 i386。

不知道哪一步错了?整个项目是使用 cmake 生成到 vs2022 C++17(如

cmake -B ../build/ -G "Visual Studio 17 2022" -A x64
),并且全部适用于 x64。 exe通过
target_link_libraries(${EXE_NAME} PRIVATE ${VIEWER_NAME})
链接到lib,dll像
target_link_libraries(${VIEWER_NAME} PRIVATE User32 Shell32 ComCtl32 ComDlg32 Gdi32 Msimg32 WinMM AdvAPI32 Ole32 ShLwApi Vfw32 WinInet)
一样链接。

visual-studio winapi win32gui
1个回答
0
投票

感谢@Simon Mourier的评论,我终于发现问题是应用程序清单中的

processorArchitecture
配置为
x86
,最好是
*
。正确修改后,错误修复了。

© www.soinside.com 2019 - 2024. All rights reserved.