OpenSSL | 静的リンク

OpenSSL は、実行時に libcrypto および libssl の DLL ファイルから読み込む代わりに、アプリケーションの実行ファイルに直接リンクできます。これにより、TLS を使用するアプリケーションは OpenSSL の DLL を配置する必要がなくなり、必要なものはあらかじめすべて .exe の中に含まれます。

この方法は、単一ファイルとして配布したい場合、配布先のマシンに正しい OpenSSL の DLL がインストールされている保証がない場合、または実行ファイルの隣に追加ファイルを置けないデプロイ方式を採用している場合に便利です。

要件

設定方法

特別な設定は必要ありません。ユニット sgcIdSSLOpenSSL_Static を、プロジェクトの uses 句(たとえばメインの .dpr ファイル)に追加するだけです。

uses

  sgcIdSSLOpenSSL_Static;

これだけです。有効化するためのコンパイラディレクティブも、選択すべき OpenSSL API バージョンもありません。次回アプリケーションを実行したときから、クライアントコンポーネントとサーバーコンポーネントの両方で、実行ファイルにリンクされた OpenSSL ライブラリが使用されます。uses 句からこのユニットを削除すると、アプリケーションは以前とまったく同じように OpenSSL の DLL を読み込む動作に戻ります。

現在リンクされている OpenSSL のバージョンは3.5.7です。このバージョンは最新の OpenSSL の修正を取り込むために随時更新されるため、OpenSSL のバージョンを自分で管理したり配布したりする必要はありません。

一般的なエラー

E2045 Bad object file format

これは、XE2 より古い Delphi バージョンでコンパイルしていることを意味します。静的リンクには Delphi XE2 以降が必要です。uses 句から sgcIdSSLOpenSSL_Static ユニットを削除すれば、アプリケーションは OpenSSL の DLL を使用してそのまま動作します。