如何在Qt项目中包含OpenSSL

时间:2013-02-04 05:44:21

标签: qt windows-7 linker openssl

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

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

5 个答案:

答案 0 :(得分:18)

假设Windows,您可以从Win32 OpenSSL Installation Project page下载其安装。您可以选择一个用于开发64位窗口或用于32位窗口。只需运行设置,一切都将轻松完成。默认安装目录为: C:\ OpenSSL-Win32
Qt creator 中,如果您想将库链接到项目,只需将此行添加到.pro文件(项目文件)中:

LIBS += -L/path/to -llibname

所以这就是我们为这个库做的事情(例如链接ubsec.lib)

LIBS += -LC:/OpenSSL-Win32/lib -lubsec

注意 -L -l <​​/ strong>。See this question。您甚至不需要在库名的末尾指定.lib。

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

INCLUDEPATH += C:/OpenSSL-Win32/include

之后你可以包含这样的文件:

#include <openssl/aes.h>

答案 1 :(得分:4)

乔治在Unable to use AES files of OpenSSL in Qt Creator

  

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

PKGCONFIG += openssl 
     

它将处理所有必需的头路径,编译 - 链接器选项和   图书馆。

     

并确保您已安装openssl-devel软件包   系统

答案 2 :(得分:4)

我正在使用Qt5.5开发Win 7(32),而这些答案中没有一个适用于我 所以我只想分享最终有效的解决方案:

1.我在C:\ OpenSSL-Win32中安装了OpenSSL 2.在c:\ OpenSSL-Win32 \ MinGW中有两个库文件:
   libeay32.a & ssleay32.a
我已将每个人的副本重新命名为扩展名:
   libeay32.a -> libeay32.lib & ssleay32.a -> ssleay32.lib
我用这种方式链接我的.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 / debug文件夹:
   (构建-XXXXX-Desktop_Qt_5_5_1_MSVC2012_32bit-调试/调试)

我希望这会有所帮助。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果您使用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)
Linux 系统上需要

${CMAKE_DL_LIBS}以避免链接时错误,例如&#34; dlopen symbol not found ...&#34;。在Windows上,它变空了。

如果openssl安装目录不是标准配置,那么您应该OPENSSL_ROOT_DIRcmake提供,例如在set(OPENSSL_ROOT_DIR "C:/msys64/mingw32")之前添加include或将-DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32指定为cmake可执行文件(在&#34;项目&#34; - &gt;&#34;构建设置&#34; - &gt;&#34; CMake&#34;标签)。