【发布时间】:2018-04-17 18:25:56
【问题描述】:
背景
基本上,我的应用程序需要 Openssl 支持,最好是通过动态链接。为此,我使用以下内容编译了 Openssl 库:
perl configure VC-WIN32 no-asm --prefix=C:\Build-OpenSSL-VC-32
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak test
nmake -f ms\ntdll.mak install
使用 VC 2017 x86 所有测试均通过。到目前为止,一切都很好。然后我使用以下配置从源代码编译了 qt5:
configure -debug-and-release -opensource -nomake examples -nomake tests -confirm-license --prefix="C:\Work\qt-bin-5.9-VC-17" -skip webengine -platform win32-msvc -openssl -I C:\Build-OpenSSL-VC-32\include -L C:\Build-OpenSSL-VC-32\lib
VC 2017 的构建过程成功。之后我安装了最新版本的 qt-creator。然后我配置了新编译版本的 qt 版本/工具包和路径。此计算机上未安装其他版本。接下来我创建了一个小程序来测试一切是否正常。这导致 QSslSocket::sslLibraryBuildVersionString() 返回 OpenSSL 1.0.2l 25 May 2017(我编译的版本),并且 QSslSocket::supportsSsl() 返回 false。注意我已经包括:
QT += network
INCLUDEPATH += C:\Build-OpenSSL-VC-32\include
LIBS += C:\Build-OpenSSL-VC-32\lib\libeay32.lib
LIBS += C:\Build-OpenSSL-VC-32\lib\ssleay32.lib
在 .pro 文件中。我尝试添加 .dll 而不是 .lib 文件,但随后出现以下错误。
C:\Build-OpenSSL-VC-32\bin\libeay32.dll:-1: error: LNK1107: invalid or corrupt file: cannot read at 0x2B8
我非常感谢任何有关我做错了什么的帮助和信息。
【问题讨论】:
标签: c++ windows qt visual-c++ openssl