今天把項目交給測試的時候發現動態加載dll的時候加載失敗了,很疑惑,自己的例子程序可以好好的運行。失敗的原因估計是我調用的DLL無法成功調用它所需要的DLL。
然後推測估計是DLL A加載DLL B等其他DLL的時候使用的相對路徑,當我從C:\\加載D:\\A\\中的DLL的時候,如果使用相對路徑,則會在C:\\中找,這肯定找不到。我原來使用SetCurrentDirectory 改變當前環境,在自己的測試程序上能加載上,但是不知道爲什麼其他人的程序就加載的時候會失敗。
後來找到一個簡單的函數SetDllDirectory 可以直接增加一個當前應用程序搜索dll的路徑。
連SetCurrentDirectory 都不需要了。╮(╯▽╰)╭
TCHAR path[MAX_PATH] = {"D:\\A\\"};
SetDllDirectory(path);