2011-11-03 50 views
0

我有多個dll,生活在不同的子目錄中,這取決於另一個名爲common.dll的第三方dll。我想設置這些DLL,以便他們知道在哪裏可以找到common.dll,而不會讓common.dll對其他程序可見,以避免衝突。在不同目錄下的二進制文件之間共享一個常見的dll

例如:

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

與這兩個bar.dll和FUBAR。 DLL取決於common.dll

我有以下約束:

  • 儘管我完全控制了dll,但我沒有控制調用的可執行文件,因此修改PATH不是一個選項。
  • 它必須在每個窗口工作從XP至多7
  • 我不能在通過窗口
  • 修改的DLL代碼來設置路徑中使用的「已知」位置安裝common.dll通過API是不希望

督察,像UNIX的是rpath + ORIGIN在我的DLL將是理想的解決方案

我希望使用清單可以幫助,但它看起來很複雜或不availble的適用於Windows XP。

回答

0

假設您正在使用Windows,我使用的一種常用方法是在某個目錄中創建一個符號鏈接,指向該文件的物理位置。然後調用者只需要知道一些「知目錄」,你把鏈接和窗戶神奇重定向到正確的文件...

真正的文件c:\blah\common\xxx.dll

鏈接:c:\MyDir\xxx.dll

現在

呼叫者可以使用c:\MyDir\xxx.dll,他們得到c:\blah\common\xxx.dll

語法上的窗戶是:mklink c:\MyDir\xxx.dll c:\blah\common\xxx.dll

+0

感謝您的回答,但我不能安裝常用的DLL我n「已知」目錄。 –

+0

對不起,我已經改寫了我的答案 - 我的話很混亂。 –

相關問題