我是 Qt 的新手,我已经做了一些谷歌搜索,但找不到足够详细的答案。
我需要在基于 qmake 的 Qt 项目中使用 OpenSSL。我该如何下载/安装/链接它,以便我可以做一个包含语句并在我的代码中使用它的功能?
假设是 Windows,您可以从Win32 OpenSSL 安装项目页面下载它的安装。您可以选择一种用于 64 位 Windows 开发或 32 位。只需运行设置,一切都会轻松完成。默认安装目录是:C:\OpenSSL-Win32
在Qt creator中,如果你想将一个库链接到你的项目,你可以将这一行添加到你的 .pro 文件(项目文件)中:
LIBS += -L/path/to -llibname
所以这就是我们为这个库所做的(例如链接 ubsec.lib )
LIBS += -LC:/OpenSSL-Win32/lib -lubsec
注意-L和-l。看到这个问题。您甚至不需要在库名称的末尾指定 .lib。
要包含 .h 文件,请将此行添加到您的 .pro 文件中:
INCLUDEPATH += C:/OpenSSL-Win32/include
之后,您可以包含这样的文件:
#include <openssl/aes.h>
来自 George 在Unable to use AES files of OpenSSL in Qt Creator:
如果这是在 Linux 上,请将以下内容添加到您的 .pro 文件中:
PKGCONFIG += openssl
它将处理所有必要的头文件路径、编译链接器选项和库。
并确保您的系统中安装了 openssl-devel 软件包。
我正在使用 Qt5.5 开发 Win 7 (32),但这些答案都不适合我。
所以我只想分享一个最终可行的解决方案:
1. 我在 C:\OpenSSL-Win32 中安装了 OpenSSL
2. 在 c:\OpenSSL-Win32\MinGW 中有两个库文件:
libeay32.a & ssleay32.a
3. 我做了一个副本他们每个人都重命名了扩展名:
libeay32.a -> libeay32.lib & ssleay32.a -> ssleay32.lib
4.我以这种方式链接了我的.pro文件中的库:
LIBS += -LC:/OpenSSL-Win32/lib/MinGW -llibeay32
LIBS += -LC:/OpenSSL-Win32/lib/MinGW -lssleay32
INCLUDEPATH += C:/OpenSSL-Win32/include
5.我从C:\ OpenSSL-Win32复制了3个.dll文件:
(libeay32.dll,libssl32.dll,ssleay32.dll )
到我的构建/调试文件夹:
(build-XXXXX-Desktop_Qt_5_5_1_MSVC2012_32bit-Debug/debug)
我希望这将有所帮助。
如果您将cmake
其用作项目的构建系统,则可以包括FindOpenSSL.cmake
以下内容:
#set(OPENSSL_USE_STATIC_LIBS TRUE) # if you want to use static libssl.a and libcrypto.a
include(FindOpenSSL)
#add_executable(${PROJECT_NAME} ...) or add_library(${PROJECT_NAME} ...)
target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS} OpenSSL::SSL OpenSSL::Crypto)
${CMAKE_DL_LIBS}
在Linux系统上是必需的,以避免链接时错误,如“未找到 dlopen 符号...”。在窗户上它变成了空的。
如果openssl
安装目录不是标准的,那么您应该提供OPENSSL_ROOT_DIR
,cmake
例如添加到可执行文件set(OPENSSL_ROOT_DIR "C:/msys64/mingw32")
之前include
或指定-DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32
到cmake
可执行文件(在“项目”->“构建设置”->“CMake”选项卡中)。
如果您使用的是 win7,并且您的 qt 版本是 mingw,并且您从http://slproweb.com/products/Win32OpenSSL.html安装 openssl,请确保您的 lib 应该在 OpenSSL-Win32/lib/MinGW 中,并添加libeay32.a 和 ssleay32.a 前的“lib”。</p>