gpt4 book ai didi

c++ - 由于 64 位 DLL,Win32 应用程序和错误 0xC0000007b

转载 作者:行者123 更新时间:2023-11-28 05:32:17 25 4
gpt4 key购买 nike

我正在尝试使用 OpenSSL 通过 Visual Studio 2015 构建 C++ 应用程序。应用程序遇到 0xC0000007b 错误,并显示消息“应用程序无法正确启动”。使用 Dependency walker 我看到我的应用程序构建为 x86,使用 X64 OpenSSL DLL(在 System32 而不是 SYSWOW64 中)。

如何强制 Visual Studio 使用 32 位 DLL?

我刚刚添加了这两个依赖:

libeay32.lib
ssleay32.lib

并且 visual studio 自动加载(或 windows?)64 位版本,这让我得到 0xc0000007b 错误

编辑:是的,32 位 DLL 也在 SysWow64 中。

有什么想法吗?

非常感谢:)

最佳答案

您不能强制 Visual Studio 自动为您的体系结构找到合适的库。您应该通过库路径明确指向它,而不是它。如果您有多个目标平台,请在此处使用 $(PlatformName)

如果您将应用程序编译为 x86,那么 Windows 会自动将您重定向到正确的 32 位 system32 文件夹。但不要依赖它,将所需的 OpenSSL dll 在本地部署到您的应用程序文件夹中。如果您有多个目标平台,在构建后事件中使用 $PlatformName 宏也很方便。例如:

copy "$(SolutionDir)3rdParty\OpenSSL\$(PlatformName)\ssleay32.dll" "$(TargetDir)"
copy "$(SolutionDir)3rdParty\OpenSSL\$(PlatformName)\libeay32.dll" "$(TargetDir)"

关于c++ - 由于 64 位 DLL,Win32 应用程序和错误 0xC0000007b,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39185736/

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