如何在Qt项目中包含OpenSSL

如何在Qt项目中包含OpenSSL,qt,windows-7,linker,openssl,Qt,Windows 7,Linker,Openssl,我是Qt的新手,我在谷歌上搜索过,找不到足够详细的答案 我需要在基于qmake的Qt项目中使用OpenSSL。如何下载/安装/链接它,这样我就可以只执行include语句并在代码中使用它的函数?假设Windows可以从下载它的安装。您可以为64位windows开发或32位windows开发选择一种。只要运行安装程序,一切都会很容易完成。默认安装目录为:C:\OpenSSL-Win32 在Qt creator中,如果要将库链接到项目,只需将此行添加到.pro文件(项目文件): 下面是我们为这个库所

我是Qt的新手,我在谷歌上搜索过,找不到足够详细的答案


我需要在基于qmake的Qt项目中使用OpenSSL。如何下载/安装/链接它,这样我就可以只执行include语句并在代码中使用它的函数?

假设Windows可以从下载它的安装。您可以为64位windows开发或32位windows开发选择一种。只要运行安装程序,一切都会很容易完成。默认安装目录为:C:\OpenSSL-Win32
Qt creator中,如果要将库链接到项目,只需将此行添加到.pro文件(项目文件):

下面是我们为这个库所做的工作(例如链接ubsec.lib)

注意-L-L。。您甚至不需要在库名称的末尾指定.lib

要包含.h文件,请将此行添加到.pro文件中:

INCLUDEPATH += C:/OpenSSL-Win32/include
之后,您可以包含如下文件:

#include <openssl/aes.h>
#包括
来自George,网址:

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

PKGCONFIG += openssl 
它将处理所有必要的头路径、编译链接器选项和 图书馆

并确保在您的应用程序中安装了openssl-devel包 系统


如果您使用的是win7,并且您的qt版本是mingw,并且您是从安装openssl的,请确保您的库应该位于openssl-Win32/lib/mingw中,并在libeay32.a和ssleay32.a中添加一个“lib”pre。

我正在使用Qt5.5开发win7(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-lsslay32

INCLUDEPATH+=C:/OpenSSL-Win32/include

5.我从C:\OpenSSL-Win32:
(libeay32.dll、libssl32.dll、ssleay32.dll)
到我的生成/调试文件夹:
(构建-XXXXX-Desktop_Qt_5_5_1_MSVC2012_32位调试/调试)


我希望这会有所帮助。

如果您使用
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 symbol…”之类的链接时间错误。在窗户上,它变成了空的


如果
openssl
安装目录不是标准的,那么您应该向
cmake
提供
openssl\u ROOT\u DIR
,例如,在
包含
之前添加
set(openssl\u ROOT\u DIR“C:/msys64/mingw32”)
,或者指定
-DOPENSSL\u ROOT\u DIR:PATH=C:/msys64/mingw32
cmake
可执行文件(在“项目”->“构建设置”->“CMake”选项卡中)。

哪个操作系统?有人知道如何为mac做这件事吗?非常感谢。这就是我一直在寻找的答案。什么是
ubsec.lib
,它与链接OpenSSL有什么关系?@jww只是一个例子。“OpenSSL安装项目”的设置默认情况下,将dll添加到系统目录中,这样也可以找到正确的dll,但前提是在安装过程中选中了此选项。否则,可能会意外加载生成系统上的某个位置的dll。除了这些步骤之外,我建议将dll的部署添加到生成输出目录中,为了避免这些问题,“捐赠”下面有一个有趣的短语:将Win32 OpenSSL集成到产品中的企业必须至少支付225美元,以帮助支付带宽成本。这看起来是一个不错的答案,但请您更清楚一点。Tx.抱歉,自上次登录以来已经很久了。您可以先按照此操作,然后更改两个文件的名称:libeay32.a ssleay32.a。我在r寻求他人的解决方案。希望能对您有所帮助。
PKGCONFIG += openssl 
#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)