【发布时间】:2012-05-23 07:02:38
【问题描述】:
我的基本问题是:我的程序 (MyProgram.exe) 依赖于另一个程序 (OtherProgram) 的 DLL,我试图避免每次 OtherProgram 更新时都重新打包一个新的 DLL。我想在 MyProgram.exe 启动时在 OtherProgram 的 DLL 中有链接,但我不完全确定 Windows 是否允许这样做。因此,如果有某种解决方法也是可以接受的。
仅作为背景,平台是 Windows 7 x64,当我在 MyProgram.exe 项目目录中创建指向 OtherProgram 安装目录中 DLL 的符号链接时,MyProgram.exe 运行良好。当我尝试在没有符号链接的情况下运行它时,出现“程序无法启动,因为您的计算机中缺少 OtherProgramDLL.dll”错误。
非常感谢任何建议或相关信息的链接!
编辑:澄清:DLL 在编译时未链接,此问题在运行时出现
【问题讨论】:
-
一种选择是使用delay loading 来控制用于DLL 的路径,而不必弄乱全局
PATH变量。例如看这篇文章:codemaestro.com/articles/6 -
您的编辑毫无意义。所有 DLL 在运行时加载。
-
您是否使用
LoadLibrary加载DLL? -
这个 SO 答案有更多关于延迟加载选项:stackoverflow.com/questions/280485/…
-
MSDN 页面指的是两种类型的动态链接。第一个也可能是最常用的方法是在程序启动时自动加载 DLL。这称为Load-Time Linking。第二个是当您在代码中显式调用
LoadLibrary以加载DLL 时。这称为Run-Time Linking,它们是互斥的。使用其中一种。
标签: c++ windows visual-studio dll