加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在程序启动时从另一个目录加载DLL

发布时间:2020-12-16 04:55:51 所属栏目:百科 来源:网络整理
导读:我的基本问题是:我的程序(MyProgram.exe)依赖于另一个程序的DLL(OtherProgram),我试图避免每次OtherProgram更新时重新打包一个新的DLL.我希望在启动时将OtherProgram的DLL中的MyProgram.exe链接,但我不完全确定 Windows允许这样做.因此,如果有某种解决方法
我的基本问题是:我的程序(MyProgram.exe)依赖于另一个程序的DLL(OtherProgram),我试图避免每次OtherProgram更新时重新打包一个新的DLL.我希望在启动时将OtherProgram的DLL中的MyProgram.exe链接,但我不完全确定 Windows允许这样做.因此,如果有某种解决方法也是可以接受的.

并且只是为了某些背景,该平台是Windows 7 x64,当我在MyProgram.exe项目目录中创建一个符号链接到MyProgram的安装目录中的DLL时,MyProgram.exe正常运行.当我尝试在没有符号链接的情况下运行它时,我得到“程序无法启动,因为计算机中缺少OtherProgramDLL.dll”错误.

任何建议或相关信息的链接非常感谢!

编辑:澄清:DLL在编译时没有链接,这个问题在运行时出现

解决方法

Windows世界中有两种类型的动态链接:

> Load-Time链接是指程序启动时自动加载DLL的时间. Windows使用我将在下面讨论的特定算法找到此DLL.
> Run-Time链接是指通过在代码中调用LoadLibrary专门加载DLL.类似的规则适用于如何找到库,但您可以指定完全限定或相对合格的路径来控制搜索.

在加载时链接的情况下,MS建议您的程序的DLL存储在加载应用程序的同一目录中并从中加载.如果这一切都可行,这可能是您的最佳选择.

如果这不起作用,还有其他几个选项,outlined here.一个是通过将DLL放在工作目录或加载应用程序的目录中来利用搜索顺序.

您可以通过以下方式更改应用程序的工作目录:

>创建应用程序的快捷方式.
>打开快捷方式的属性
>使用DLL所在的目录编辑“开始”属性.

使用快捷方式启动应用程序时,它将加载正确的DLL.

加载时链接的其他选项包括:

>向应用程序添加清单,指定您的从属assemblies所在的位置,或者,>设置PATH.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读