首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在系统路径之外使用dll

如何在系统路径之外使用dll
EN

Stack Overflow用户
提问于 2012-11-07 19:49:54
回答 3查看 5.5K关注 0票数 17

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

我找到的避免安装程序的最简单的解决方法(我只是删除一个exe,我对这种方法没有意见)是:

在程序启动时,我将它们解压到exe文件夹

  • exe

这是完美的,但我想改善的方法,解压缩的dll在一个临时文件夹,而不是在exe文件夹(在许多情况下是桌面)。

问题是我不知道如何强制应用程序使用temp文件夹中的dll,因为现在的行为是:如果dll不在当前目录中,请尝试在系统路径中定义的目录中进行搜索。

谁知道强制indy在我的临时路径中使用dll的解决方案?(比如“临时注册dll”)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-07 20:46:22

将DLL写入temp文件夹后,请立即使用LoadLibrary加载DLL。

这将使Indy的LoadLibrary在需要时使用您的DLL:

如果lpFileName不包含路径,并且有多个加载的模块具有相同的基本名称和扩展名,则该函数将返回最先加载的模块的句柄。

票数 16
EN

Stack Overflow用户

发布于 2012-11-08 03:38:14

如果您使用的是最新版本的Indy 10,IdSSLOpenSSLHeaders单元有一个公共IdOpenSSLSetLibPath()函数来告诉Indy在哪个自定义文件夹中查找OpenSSL DLL:

procedure IdOpenSSLSetLibPath(const APath: String);
票数 21
EN

Stack Overflow用户

发布于 2012-11-07 20:36:17

您可以使用SetDllDirectory来操作DLL搜索顺序。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13269169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档