由于64位DLL

时间:2016-08-27 21:04:28

标签: c++ visual-studio dll openssl

我'米'尝试使用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错误

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

请问好吗?

非常感谢:)

1 个答案:

答案 0 :(得分:1)

您无法强制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)"