在不同目录中的二进制文件之间共享一个公共dll

时间:2011-11-03 09:38:10

标签: dll

我有多个dll,住在不同的子目录中,这取决于另一个叫做common.dll的第三方dll。我想设置这些dll,以便他们知道在哪里找到common.dll而不使其他程序看到common.dll以避免冲突。

例如:

  • 富/ bar.dll
  • 富/酒吧/ fubar.dll
  • 公共/ common.dll

bar.dll和fubar.dll都取决于common.dll

我有以下限制:

  • 虽然我对dll有完全控制权,但我无法控制调用可执行文件,因此修改PATH不是一种选择。
  • 它必须适用于从XP到7
  • 的每个窗口
  • 我无法在Windows
  • 使用的“已知”位置安装common.dll
  • 修改dll代码以通过API设置路径是不可取的

IOW,像我的dll上的unix rpath + ORIGIN这样的东西将是理想的解决方案

我希望使用清单可以提供帮助,但它看起来非常复杂或无法用于windows xp。

1 个答案:

答案 0 :(得分:0)

假设您正在使用Windows,我使用的常用方法是在某个目录中创建指向文件物理位置的符号链接。然后调用者只需知道一些“已知目录”,您可以将链接和窗口神奇地重定向到正确的文件......

真实档案c:\blah\common\xxx.dll

link:c:\MyDir\xxx.dll

现在,来电者可以使用c:\MyDir\xxx.dll,他们可以到c:\blah\common\xxx.dll

Windows上的

语法是:mklink c:\MyDir\xxx.dll c:\blah\common\xxx.dll