在不同目录中的二进制文件之间共享公共dll
我有多个dll,位于不同的子目录中,它们依赖于另一个称为common.dll的第三方dll。我想设置这些dll,以便它们知道在哪里可以找到common.dll,而不使common.dll对其他程序可见,以避免冲突 例如:在不同目录中的二进制文件之间共享公共dll,dll,Dll,我有多个dll,位于不同的子目录中,它们依赖于另一个称为common.dll的第三方dll。我想设置这些dll,以便它们知道在哪里可以找到common.dll,而不使common.dll对其他程序可见,以避免冲突 例如: foo/bar.dll foo/bar/fubar.dll common/common.dll 同时使用bar.dll和fubar.dll,具体取决于common.dll 我有以下限制: 虽然我可以完全控制DLL,但我不能控制调用可执行文件,所以修改路径不是一个选项 它必
- foo/bar.dll
- foo/bar/fubar.dll
- common/common.dll
- 虽然我可以完全控制DLL,但我不能控制调用可执行文件,所以修改路径不是一个选项
- 它必须在从XP到7的所有windows上运行
- 我无法在windows使用的“已知”位置安装common.dll
- 修改DLL代码以设置通过API的路径是不可取的
我希望使用manifest会有所帮助,但它看起来非常复杂,或者对windows xp不可用。假设您使用的是windows,我常用的方法是在某个目录中创建指向文件物理位置的符号链接。然后,调用者只需要知道一些“已知目录”,你把链接和windows神奇地重定向到正确的文件 实文件
c:\blah\common\xxx.dll
链接:c:\MyDir\xxx.dll
现在调用者可以使用c:\MyDir\xxx.dll
,他们可以访问c:\blah\common\xxx.dll
windows上的语法是:
mklink c:\MyDir\xxx.dll c:\blah\common\xxx.dll
谢谢您的回答,但我无法将公共dll安装在“已知”目录中。对不起,我已重新表述了我的回答-我的话让人困惑。