delphi 如何静态链接Indy SSL文件?

bvpmtnay  于 2022-11-23  发布在  其他
关注(0)|答案(4)|浏览(192)

我如何静态链接Indy OpenSLL文件?AFAIK只允许ICS这样做,但由于一些奇怪的原因,Indy不允许。它也不提供.obj文件?这将允许我避免对dll的任何依赖。

lf5gs5x2

lf5gs5x21#

OpenSSL主要是动态使用的。这使得在发布新的OpenSSL版本时可以轻松升级。然而,OpenSSL也可以静态编译,Indy 10.6.0+确实支持静态链接到OpenSSL,但目前只支持在iOS设备上(因为Apple不允许动态链接OpenSSL)。在所有其他平台上(包括iOS模拟器),默认情况下Indy会动态链接到OpenSSL。如果您希望Indy在非iOS平台上静态链接到OpenSSL,则必须手动设置:
1.为目标平台编译/获取OpenSSL的静态链接目标文件(即,在Indy的OpenSSL-Binaries GitHub repo中提供iOS的静态.a文件)。
1.更新Indy的IdCompilerDefines.inc文件,为目标平台定义USE_OPENSSLSTATICLOAD_OPENSSL
1.将IdSSLOpenSSLHeadersIdSSLOpenSSLHeaders_static单位添加到uses子句中。
1.请确保IdSSLOpenSSLHeaders_static.pas针对您的目标平台进行编译(它目前是为iOS设计的,因此您可能需要对其进行调整)。
另一种选择是根本不使用OpenSSL,而是使用另一个SSL/TLS库,该库可以静态链接,并由一个合适的TIdSSLIOHandlerSocketBase实现 Package ,以供Indy使用。例如,EldoS SecureBlackbox为其SSL/TLS库提供了这样的实现。将来,Indy计划为Windows上的SChannel添加一个新的IOHandler实现。因为它们已经安装在操作系统中。

wdebmtf2

wdebmtf22#

您不能静态链接任何DLL。扩展名字面上代表“动态链接库”。
如果没有依赖项,则会使您正在开发的可执行文件/库变得更大,并受到许可问题的影响,同时也会使其更难更新:为什么不需要共享对象(DLL)?
只要将DLL包含在项目中即可。

dauxcl2d

dauxcl2d3#

那这个呢:http://enigmaprotector.com/en/aboutvb.html
它只有windows(我认为),但你可以把你所有的DLL绑定到你的主EXE,甚至把依赖DLL绑定到主DLL。

相关问题