我制作了一个使用 openssl dll(libeay32.dll
和 ssleay32.dll
)的应用程序。
它是 indy 使用它们,我不直接调用 dll。
我发现避免安装程序的最简单解决方法(我只是 delpoy 一个 exe,我对这种方法没意见)是:
- 将dll作为exe的资源
- 在程序启动时,我将它们解压到 exe 文件夹中
- exe 使用它们
这是完美的,但我想通过将 dll 提取到临时文件夹而不是 exe 文件夹(在许多情况下是桌面)中来改进方法。
问题是我不知道如何强制应用程序使用临时文件夹中的 dll,因为现在的行为是: 如果 dll 不在当前目录中,请尝试在系统路径中定义的目录中搜索。
谁知道强制 Indy 使用我的临时路径中的 dll 的解决方案? (比如“临时注册 dll”)
最佳答案
如果您使用的是最新版本的 Indy 10,IdSSLOpenSSLHeaders
单元有一个公共(public)的 IdOpenSSLSetLibPath()
函数来告诉 Indy 要查看哪个自定义文件夹用于 OpenSSL DLL:
procedure IdOpenSSLSetLibPath(const APath: String);
关于delphi - 如何使用系统路径之外的dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39616463/