2015-11-07 83 views
1

我在一個特定目錄的不同子目錄中有四個不同的.exes。所有的程序都需要完全相同的.dll(Qt5Core,Qt5Gui和Qt5Widgets)。有沒有辦法讓這三個.dll只在根目錄中,而不必將它們複製到每個子目錄中?將qt dll鏈接到多個可執行文件

回答

1

Here you find the order其中在Windows上搜索DLL路徑:

由於安全的DLL搜索模式是en默認體健,順序是

  1. 從其中加載應用程序的目錄。
  2. 系統目錄。使用GetSystemDirectory函數獲取此目錄的路徑。
  3. 16位系統目錄。沒有獲得該目錄路徑的函數,但它被搜索。
  4. Windows目錄。使用GetWindowsDirectory函數獲取此目錄的路徑。
  5. 當前目錄。
  6. PATH環境變量中列出的目錄。請注意,這不包括App Paths註冊表項指定的每個應用程序路徑。計算DLL搜索路徑時不使用App Paths鍵。

所以最容易做的事情是要確保你從你放置的DLL(5)的工作目錄中運行你的應用程序。這可以通過編寫一個首先在那裏導航的starter.bat文件,然後相對於DLL direcory運行應用程序來完成。

另一種方法是將DLL目錄添加到啓動器.bat文件(6.)中的PATH中。

在這兩種情況下,您都需要爲每個要運行的.exe包裝腳本。

如果可以確保指向應用程序的鏈接正確設置工作目錄,則可以避免這種情況。如果您有一個安裝程序爲用戶創建快捷方式,並且您知道用戶不會通過右鍵單擊.exe自行創建一個自己,那麼這將起作用。


有可能還在使用hardlinks or junctions的方式,但我不知道你是否可以複製和部署在Linux上那些像符號鏈接,或者如果您需要在目標系統上創建它們。

0

是的,你使用的是Windows,你可以在環境變量下

計算機>屬性 - >高級系統設置添加根目錄的路徑 - >環境變量

enter image description here

相關問題