2013-12-22 73 views
0

我目前正在開發一個帶有SDL的C++應用程序,它需要DLL才能工作。現在,它只會在與程序相同的文件夾中找到DLL。如何使程序在名爲「libs」的子目錄中搜索。C++設置的dll搜索位置

+0

爲什麼不能建立快捷方式? –

+0

爲什麼不將DLL複製到'C:\ WINDOWS \ system32'? –

+0

@KerrekSB,不妨將它複製到PATH然後。 – ManuelH

回答

1

如果使用加載時間鏈接,則需要將DLL放在DLL搜索路徑中。這是記錄在這裏:Dynamic-Link Library Search Order。通常這需要您將DLL文件夾添加到PATH環境變量。現在,向PATH環境變量添加一個文件夾是解決問題的重量級解決方案。你當然不想這樣做。

另一方面,如果您切換到運行時鏈接,那麼您可以將DLL的完整路徑傳遞到LoadLibrary。您可以撥打GetModuleFileName查找可執行文件的文件名,然後拉出目錄,並添加\libs\MyDll.dll。但是,運行時鏈接的最大缺點是您需要爲導入的每個函數使用GetProcAddress

這些選項都不是特別有吸引力。我的建議是改變你的建議設計。將可執行文件所需的所有DLL放入與可執行文件相同的目錄中。

1

Environment Variables中添加dll文件夾路徑(請注意其中的路徑由;分隔)。

+0

我希望這是一個通用設置,這樣即使我分發了這些文件,該程序仍然會知道在哪裏查找dll。 – tVoss42

+0

@ tVoss42這將是一個通用設置,至少對於您的電腦而言。 – herohuyongtao