2013-01-07 30 views

回答

2

如果在應用程序中未使用DLL的完整路徑,則這取決於DLL search order。的默認順序(SafeDllSearchMode禁用):

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

感謝您的回答麥克。 我讀了你的鏈接的內容,但是有些東西對我來說還不清楚。 似乎在我的情況下,通過搜索Windows目錄(在我的情況下Windows \ Microsoft.NET \程序集\ GAC_32 \ System.Data.SQLite)找到DLL 但是,那裏有兩個版本。我無法通過閱讀您的鏈接來確定它是使用第一個還是第二個。 或者也許有一些方法可以在運行時找出哪些dll被使用? – d0kt0r1

+0

好吧,我想我找到了一種方法來檢查使用哪個版本。 如果你看VS中的輸出窗口,你會看到所有的DLL加載。在這種情況下加載第一個。 無論如何,再次感謝。 – d0kt0r1

+0

搜索DLL是按名稱執行的。如何在同一個目錄中有兩個版本? –

相關問題