Indy OpenSLL ファイルを静的にリンクするにはどうすればよいですか? 私の知る限り、ICS のみがこれを許可していますが、何らかの奇妙な理由で Indy は許可していません。.obj ファイルも提供していませんか? これにより、dll への依存を回避できます。
4 に答える
OpenSSL は、主に動的に使用するためのものです。これにより、新しい OpenSSL バージョンがリリースされたときに簡単にアップグレードできます。ただし、OpenSSL は静的にコンパイルすることもできます。Indy 10.6.0+ は OpenSSL への静的なリンクをサポートしていますが、現在は iOS デバイスでのみサポートしています (Apple は OpenSSL の動的なリンクを許可していないため)。他のすべてのプラットフォーム (iOS シミュレーターを含む) では、Indy はデフォルトで動的に OpenSSL にリンクします。iOS 以外のプラットフォームで Indy を OpenSSL に静的にリンクさせたい場合は、手動で設定する必要があります。
ターゲット プラットフォーム用の OpenSSL 用の静的 .lib/.a ファイルをコンパイル/取得します (iOS 用の静的 .a ファイルは Indy のFulgan ミラーで提供されます)。
Indy の IdCompilerDefines.inc ファイルを更新して、ターゲット プラットフォームを定義します
USE_OPENSSL
。STATICLOAD_OPENSSL
IdSSLOpenSSLHeaders
andIdSSLOpenSSLHeaders_static
ユニットをuses
句に追加します。ターゲット プラットフォーム用にコンパイルされていることを確認
IdSSLOpenSSLHeaders_static.pas
します (現在は iOS 用に設計されているため、微調整が必要になる場合があります)。
別の方法は、OpenSSL をまったく使用せず、静的にリンクできTIdSSLIOHandlerSocketBase
、Indy が使用する適切な実装によってラップされた別の SSL/TLS ライブラリを使用することです。 たとえば、 EldoS SecureBlackboxは、その SSL/TLS ライブラリにそのような実装を提供します。そして将来、Indy は、Windows 上の SChannel 用の新しい IOHandler 実装を追加することを計画しています。これは、DLL が OS に既にインストールされているため、配布する必要がありません。
OpenSSL DLL をリソースからメモリにロードすることは、実行可能な代替手段になりますか?
http://delphi.about.com/od/windowsshellapi/a/delphi-load-resource-dll-into-memory.htm
DLL を静的にリンクすることはできません。拡張子は文字通り「動的にリンクされたライブラリ」を表します。
依存関係がないと、開発している実行可能ファイル/ライブラリが大きくなり、ライセンスの問題が発生する可能性があります。また、更新がより困難になります: 共有オブジェクト (DLL) が必要ないのはなぜですか?
プロジェクトに DLL を含めるだけです。