我'米'尝试使用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
。
请问好吗?
非常感谢:)
答案 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)"