How to Include OpenSSL in a Qt project

前端 未结 5 1061
旧时难觅i
旧时难觅i 2020-11-27 17:00

I\'m new to Qt, I\'ve done some Googleing and can\'t find a detailed enough answer.

I need to use OpenSSL in my qmake-based Qt project. How do I go about downloading

相关标签:
5条回答
  • 2020-11-27 17:42

    From George at Unable to use AES files of OpenSSL in Qt Creator:

    If this is on Linux, add the following into your .pro file:

    PKGCONFIG += openssl 
    

    It will handle all necessary header paths, compile-linker options and the libraries.

    And make sure you have the openssl-devel package installed in your system.

    0 讨论(0)
  • 2020-11-27 17:46

    if you are on win7,and your qt version is mingw, and u install openssl from http://slproweb.com/products/Win32OpenSSL.html ,make sure your lib should be in the OpenSSL-Win32/lib/MinGW, and add a "lib" pre to the libeay32.a and ssleay32.a 。

    0 讨论(0)
  • 2020-11-27 17:48

    Assuming Windows, you can download its installation from Win32 OpenSSL Installation Project page. You can choose one for 64-bit windows developing or for 32-bit. Just run the setup and everything will be done easily. The default installation directory is : C:\OpenSSL-Win32
    In Qt creator, if you then want to link a library to your project you can just add this line to your .pro file(project file ) :

    LIBS += -L/path/to -llibname
    

    So here's what we do for this library( for example to link ubsec.lib )

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

    Pay attention to -L and -l.See this question. You don't even need to specify .lib at the end of the library name.

    For including .h files add this line to your .pro file :

    INCLUDEPATH += C:/OpenSSL-Win32/include
    

    after that you can include a file like this :

    #include <openssl/aes.h>
    
    0 讨论(0)
  • 2020-11-27 17:48

    I was working on Win 7 (32) with Qt5.5, and non of these answers worked for me.
    So I just want to share a solution that finally worked:

    1. I have OpenSSL installed in C:\OpenSSL-Win32
    2. In c:\OpenSSL-Win32\MinGW there are two library files:
    libeay32.a & ssleay32.a
    3. I've made a copy of each of them an renamed the extensions:
    libeay32.a -> libeay32.lib & ssleay32.a -> ssleay32.lib
    4. I linked libraries in my .pro file this way:
    LIBS += -LC:/OpenSSL-Win32/lib/MinGW -llibeay32
    LIBS += -LC:/OpenSSL-Win32/lib/MinGW -lssleay32
    INCLUDEPATH += C:/OpenSSL-Win32/include
    5. I copied 3 .dll files from C:\OpenSSL-Win32:
    (libeay32.dll, libssl32.dll, ssleay32.dll)
    to my build/debug folder:
    (build-XXXXX-Desktop_Qt_5_5_1_MSVC2012_32bit-Debug/debug)

    I hope this will help.

    0 讨论(0)
  • 2020-11-27 17:58

    If you use cmake as build system for your project, then you may include FindOpenSSL.cmake as follows:

    #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} is required on Linux systems to avoid link-time errors like "dlopen symbol not found...". On windows it became empty.

    If openssl installation directory is not being standard, then you should provide OPENSSL_ROOT_DIR to cmake, e.g. to add set(OPENSSL_ROOT_DIR "C:/msys64/mingw32") before include or to specify -DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32 to cmake executable (in "Projects"->"Build settings"->"CMake" tab).

    0 讨论(0)
提交回复
热议问题