delphi - 如何使用系统路径之外的dll

标签 delphi dll openssl indy indy10

我制作了一个使用 openssl dll(libeay32.dllssleay32.dll)的应用程序。 它是 indy 使用它们,我不直接调用 dll。

我发现避免安装程序的最简单解决方法(我只是 delpoy 一个 exe,我对这种方法没意见)是:

  1. 将dll作为exe的资源
  2. 在程序启动时,我将它们解压到 exe 文件夹中
  3. 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/

相关文章:

c - 在 C 中提取 DER 编码证书的公钥

cryptography - 可以用私钥加密/用公钥解密吗?

ios - Delphi iOS 和平移手势 - 距离始终为零

delphi - 如何编写可在MS Word/Excel/Powerpoint中使用的Delphi ActiveX控件?

c# - 如何在 C# 中使用由 MATLAB 编译的 C++ DLL

ms-access - 阻止 Access 外部 ActiveX 控件中的鼠标滚轮行为

php - 在 Centos 8 上使用 ODBC 17 和 Laravel 连接到 SQL Server 时出现 SSL 错误 'dh key is too small'

.net - Delphi 和 Delphi.NET 之间的区别

multithreading - Delphi访问线程变量

c++ - 为什么我在 wish 控制台上加载 dll 时得到 "invalid command name "MZ""?