2010-01-26 46 views
6

我有一個內置於Visual Studio(2008)的C++應用程序並鏈接到Boost DLL。在調試時,似乎需要將Boost DLL複製到debug文件夾中,以便我在IDE中運行的exe可以鏈接到它。我可以使用構建後步驟來複制DLL,但我想知道在Visual Studio中是否有一個設置可以在調試時爲DLL提供額外的搜索路徑?避免將第三方DLL複製到調試文件夾中

+0

http://stackoverflow.com/questions/1776060/how-to-make-visual-studio-copy-dll-to-output-directory – 2010-01-26 16:52:36

+0

引用的問題涉及到使用後期製作步驟,我希望避免。 – Permaquid 2010-01-26 17:17:54

+1

JaredPar提供了控制環境的提示,而不是尋找一些Visual Studio範圍內的庫搜索位置。事實證明,有一個Visual Studio設置,通過(顯然)向PATH環境變量添加另一個路徑,提供了我想要的內容:Configuration Properties> Debugging |環境。這是每個項目,您可以使用環境變量。唯一缺少的部分是文檔,它描述了我想要添加的調試環境如何合併到現有的調試環境中。 – Permaquid 2010-01-27 03:47:05

回答

4

這裏有一個輕微的誤解。在調試時,Visual Studio本身不直接控制將DLL加載到應用程序中。 DLL的加載由操作系統直接控制。當請求加載時,操作系統搜索一組感興趣的目錄。

在VS影響DLL的加載的主要方式是憑藉它們複製到構建輸出目錄的。這通常是運行應用程序的目錄,因此是操作系統搜索必要DLL的路徑之一。

操作系統搜索的目錄由幾個項目控制。最容易改變的是環境變量(我相信LIBPATH)。在調試模式下,您可以更改此環境變量以指向您的其他目錄,並從那裏加載DLL。

雖然沒有什麼可以在Visual Studio中直接設置。

+0

它看起來像你可以通過設置環境改變在調試時環境是PATH = $(PATH); <你的其他路徑>,其中可以包含使用$()語法引用的環境變量。你還需要合併=是。如果有任何解釋細節的文檔,我會感興趣。 – Permaquid 2010-01-26 19:01:34

+0

我標記爲「答案」,因爲這是最有幫助的答案。不幸的是,在Visual Studio中沒有什麼可以設置的位是不正確的(在我看來) - 請參閱我在該問題下的評論。但是,謝謝你的提示。 – Permaquid 2010-02-02 18:47:27

1

有很多的隱式鏈接到EXE在Windows選項的DLL沒有。由於將DLL與EXE存儲在同一文件夾中,因此可以將其存儲在PATH環境變量中列出的目錄中。只有c:\ windows \ system32保證列出,你不能合理地使用該文件夾。一個改變系統環境的安裝程序可以工作,但仍然不合理。

唯一真正的選擇是存儲在WinSxS文件並排端緩存的DLL。您需要編寫一個清單,以便Windows可以找到該DLL。你需要編寫一個安裝程序把DLL放入WinSxS中。鑑於文檔的質量,你需要真的,真的想這樣做。

如果這只是再調試的考慮也許它真的不是什麼大不了的改變你的dev的機器上的路徑。使用控制面板,系統小程序。

相關問題