6

Indy OpenSLL ファイルを静的にリンクするにはどうすればよいですか? 私の知る限り、ICS のみがこれを許可していますが、何らかの奇妙な理由で Indy は許可していません。.obj ファイルも提供していませんか? これにより、dll への依存を回避できます。

4

4 に答える 4

6

OpenSSL は、主に動的に使用するためのものです。これにより、新しい OpenSSL バージョンがリリースされたときに簡単にアップグレードできます。ただし、OpenSSL は静的にコンパイルすることもできます。Indy 10.6.0+ は OpenSSL への静的なリンクをサポートしていますが、現在は iOS デバイスでのみサポートしています (Apple は OpenSSL の動的なリンクを許可していないため)。他のすべてのプラットフォーム (iOS シミュレーターを含む) では、Indy はデフォルトで動的に OpenSSL にリンクします。iOS 以外のプラットフォームで Indy を OpenSSL に静的にリンクさせたい場合は、手動で設定する必要があります。

  1. ターゲット プラットフォーム用の OpenSSL 用の静的 .lib/.a ファイルをコンパイル/取得します (iOS 用の静的 .a ファイルは Indy のFulgan ミラーで提供されます)。

  2. Indy の IdCompilerDefines.inc ファイルを更新して、ターゲット プラットフォームを定義しますUSE_OPENSSLSTATICLOAD_OPENSSL

  3. IdSSLOpenSSLHeadersandIdSSLOpenSSLHeaders_staticユニットをuses句に追加します。

  4. ターゲット プラットフォーム用にコンパイルされていることを確認IdSSLOpenSSLHeaders_static.pasします (現在は iOS 用に設計されているため、微調整が必​​要になる場合があります)。

別の方法は、OpenSSL をまったく使用せず、静的にリンクできTIdSSLIOHandlerSocketBase、Indy が使用する適切な実装によってラップされた別の SSL/TLS ライブラリを使用することです。 たとえば、 EldoS SecureBlackboxは、その SSL/TLS ライブラリにそのような実装を提供します。そして将来、Indy は、Windows 上の SChannel 用の新しい IOHandler 実装を追加することを計画しています。これは、DLL が OS に既にインストールされているため、配布する必要がありません。

于 2013-10-30T23:57:51.770 に答える
0

OpenSSL DLL をリソースからメモリにロードすることは、実行可能な代替手段になりますか?

http://delphi.about.com/od/windowsshellapi/a/delphi-load-resource-dll-into-memory.htm

于 2013-10-31T08:40:50.383 に答える
0

DLL を静的にリンクすることはできません。拡張子は文字通り「動的にリンクされたライブラリ」を表します。

依存関係がないと、開発している実行可能ファイル/ライブラリが大きくなり、ライセンスの問題が発生する可能性があります。また、更新がより困難になります: 共有オブジェクト (DLL) が必要ないのはなぜですか?

プロジェクトに DLL を含めるだけです。

于 2013-10-30T23:41:00.883 に答える