17

我是 Qt 的新手,我已经做了一些谷歌搜索,但找不到足够详细的答案。

我需要在基于 qmake 的 Qt 项目中使用 OpenSSL。我该如何下载/安装/链接它,以便我可以做一个包含语句并在我的代码中使用它的功能?

4

5 回答 5

24

假设是 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>
于 2013-02-04T06:36:15.753 回答
7

来自 George 在Unable to use AES files of OpenSSL in Qt Creator

如果这是在 Linux 上,请将以下内容添加到您的 .pro 文件中:

PKGCONFIG += openssl 

它将处理所有必要的头文件路径、编译链接器选项和库。

并确保您的系统中安装了 openssl-devel 软件包。

于 2014-02-28T18:41:34.640 回答
4

我正在使用 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)

我希望这将有所帮助。

于 2016-05-07T11:28:02.487 回答
1

如果您将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_DIRcmake例如添加到可执行文件set(OPENSSL_ROOT_DIR "C:/msys64/mingw32")之前include或指定-DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32cmake可执行文件(在“项目”->“构建设置”->“CMake”选项卡中)。

于 2017-05-12T10:44:48.897 回答
0

如果您使用的是 win7,并且您的 qt 版本是 mingw,并且您从http://slproweb.com/products/Win32OpenSSL.html安装 openssl,请确保您的 lib 应该在 OpenSSL-Win32/lib/MinGW 中,并添加libeay32.a 和 ssleay32.a 前的“lib”。</p>

于 2016-04-12T13:08:00.040 回答