SetDllDirectory設定DLL加載路徑

今天把項目交給測試的時候發現動態加載dll的時候加載失敗了,很疑惑,自己的例子程序可以好好的運行。失敗的原因估計是我調用的DLL無法成功調用它所需要的DLL。

Created with Raphaël 2.1.0MyDLLMyDLLDLL ADLL ADLL BDLL BDLL ......DLL ......

然後推測估計是DLL A加載DLL B等其他DLL的時候使用的相對路徑,當我從C:\\加載D:\\A\\中的DLL的時候,如果使用相對路徑,則會在C:\\中找,這肯定找不到。我原來使用SetCurrentDirectory 改變當前環境,在自己的測試程序上能加載上,但是不知道爲什麼其他人的程序就加載的時候會失敗。
後來找到一個簡單的函數SetDllDirectory 可以直接增加一個當前應用程序搜索dll的路徑。
SetCurrentDirectory 都不需要了。╮(╯▽╰)╭

TCHAR path[MAX_PATH] = {"D:\\A\\"};
SetDllDirectory(path);
發佈了38 篇原創文章 · 獲贊 18 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章