exe動態呼叫A.DLL
A.DLL還會動態呼叫B.DLL
A.DLL和B.DLL在同一層路徑,exe在A.DLL的上一層
exe呼叫A.DLL方法:
m_hHandle = ::LoadLibraryEx ( _T("A.DLL的絕對路徑") , NULL , LOAD_WITH_ALTERED_SEARCH_PATH );
A.DLL呼叫B.DLL方法
m_hHandle = ::LoadLibraryEx ( _T("B.DLL的絕對路徑") , NULL , LOAD_WITH_ALTERED_SEARCH_PATH );
exe層呼叫LoadLibraryEx 報錯GetLastError = 0
如果將A.DLL中靜態加載B.DLL,exe層呼叫就沒問題
有什么好的解決方案嗎?
uj5u.com熱心網友回復:
可以試試用 GetModuleFileName 獲取模塊本身的檔案路徑名, 然后構造出B.DLL 的絕對路徑TCHAR szPath[MAX_PATH + 1] = {0};
if(GetModuleFileName(AfxGetInstanceHandle( ), szPath, MAX_PATT))
{
PathRemoveFileSpec(szPath); //去除當前模塊檔案名
PathAppend(szPath, _T("B.DLL)); //追加B.DLL
HMODULE hDLLB = LoadLibrary(szPath);
if(hDLLB)
{
……
FreeLibrary(hDLLB);
}
}
uj5u.com熱心網友回復:
是不是B有什么依賴導致加載失敗uj5u.com熱心網友回復:
按照你的方法還是一樣的錯誤
uj5u.com熱心網友回復:
Depends看了一下B.dll依賴的dll也全部都放在同一級目錄了,
exe層呼叫LoadLibrary報錯GetLastError =1114
uj5u.com熱心網友回復:
1114 A dynamic link library (DLL) initialization routine failed.也就是B.DLL 的DllMain 回傳了FALSE, 具體的原因的除錯或寫日志看了
uj5u.com熱心網友回復:
需要看一下DllMain入口函式中呼叫了什么,做了什么操作?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/54417.html
標籤:進程/線程/DLL
上一篇:mfc單檔案架構視窗最大化
下一篇:把3個16進制,合并成字串
