方式一 採用LoadLibraryEx
若DLL不在調用方的同一目錄下,能夠用LoadLibrary(L"DLL絕對路徑")加載。但若調用的DLL內部又調用另一個DLL,此時調用仍會失敗。解決辦法是用LoadLibraryEx:
eg: LoadLibraryEx("DLL絕對路徑", NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
經過指定LOAD_WITH_ALTERED_SEARCH_PATH,讓系統DLL搜索順序從DLL所在目錄開始。test
方式二 採用SetCurrentDir
跨目錄調用dll,你應該這樣
1 用GetCurrentDir保存當前的工做目錄
2 用SetCurrentDir將當前的工做目錄,設置爲你的DLL所在的路徑,須要使用絕對路徑
3 用LoadLibrary你的DLL
4 使用SetCurrentDir恢復到原來的工做路徑
eg:
TCHAR chCurDir[MAX_PATH] = {0};
GetCurrentDirectory(MAX_PATH, chCurDir);
SetCurrentDirectory(_T("c:\\test\\"));
m_hDLL = LoadLibrary(_T("demo.dll"));
SetCurrentDirectory(chCurDir);搜索