web-dev-qa-db-ja.com

QtプロジェクトにOpenSSLを含める方法

私はQtを使い始めたばかりですが、Googleを使ったことがあり、詳細な答えを見つけることができません。

QmakeベースのQtプロジェクトでOpenSSLを使用する必要があります。 includeステートメントを実行してコードでその関数を使用できるように、ダウンロード/インストール/リンクするにはどうすればよいですか?

16
Mitch

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>
21
s4eed

Georgeから Qt CreatorでOpenSSLのAESファイルを使用できない

これがLinux上にある場合は、.proファイルに以下を追加します。

PKGCONFIG += openssl 

必要なすべてのヘッダーパス、コンパイルリンカーオプション、およびライブラリを処理します。

また、openssl-develパッケージがシステムにインストールされていることを確認してください。

6
jww

私はQt5.5でWin 7(32)を使っていましたが、これらの答えのどれもうまくいきませんでした。
そこで、最終的に機能したソリューションを共有したいと思います。

1。 OpenSSLがC:\ OpenSSL-Win32にインストールされています
2。 c:\ OpenSSL-Win32\MinGWには、2つのライブラリファイルがあります。
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)

これがお役に立てば幸いです。

4
RogerT

win7を使用していて、qtのバージョンがmingwであり、opensslを http://slproweb.com/products/Win32OpenSSL.html からインストールする場合は、ライブラリがOpenSSL-Win32にあることを確認してください/ lib/MinGW、およびlibeay32.aとssleay32.aに「lib」プレを追加します。

0
loc

プロジェクトのビルドシステムとして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}_は、「dlopenシンボルが見つかりません...」などのリンク時エラーを回避するためにLinuxシステムで必要です。 Windowsでは空になりました。

opensslインストールディレクトリが標準ではない場合、_OPENSSL_ROOT_DIR_をcmakeに提供する必要があります。 includeの前にset(OPENSSL_ROOT_DIR "C:/msys64/mingw32")を追加するか、cmake実行可能ファイルに_-DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32_を指定します(「プロジェクト」->「ビルド設定」->「CMake」タブ)。

0