基本的はnugetで導入可能だが別途dllが必要なので、レアではあるがstaticライブラリでアプリを作る場合のメモ。
取得
- バイナリをダウンロードする。 https://slproweb.com/products/Win32OpenSSL.html よりWin32とWin64を取得する。
- インストール先はそれぞれ「C:\OpenSSL-Win32」と「C:\OpenSSL-Win64」とする
VSの設定
プロジェクトのプロパティより「リンカー」「全般」を選択。「追加のライブラリディレクトリ」の欄に以下のパスを設定。「C:\OpenSSL-Win32\lib\VC\static」か「C:\OpenSSL-Win64\lib\VC\static」
「C/C++」「全般」を選択し「追加のインクルードディレクトリ」の欄に以下のパスを設定。「C:\OpenSSL-Win32\include」か「C:\OpenSSL-Win64\include」
「リンカー」「入力」より以下のライブ来rファイルを設定する
「Crypt32.lib」全プラットフォーム、各構成共通
32bit
Release マルチスレッドDLL:「libcrypto32MD.lib」「libssl32MD.lib」
Release マルチスレッド:「libcrypto32MT.lib」「libssl32MT.lib」
64bit
Release マルチスレッドDLL:「libcrypto64MD.lib」「libssl64MD.lib」
Release マルチスレッド:「libcrypto64MT.lib」「libssl64MT.lib」
Debug版は各ファイル名の末尾にdが付くファイル「***d.lib」
古いopenssl(1.0系)から1.1系にアップグレードすると
EVP_CIPHER_CTXの初期化方法が変わっていることによる
ビルドエラーが発生するので対処する必要がある。
EVP_CIPHER_CTX ctx
は
EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
となり、引数で使用している個所もポインターにする。