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 正常工作。