loadlibrary失敗的解決方法
發(fā)布時(shí)間:2025-08-17 | 來(lái)源:互聯(lián)網(wǎng)轉(zhuǎn)載和整理
1、文件路徑不對(duì)
2、dll里有全局變量出事化失敗或dllmain函數(shù)返回false。
我們這個(gè)程序里用的是絕對(duì)路徑,原因1是不成立的。分析dll的代碼,發(fā)現(xiàn)原因2也是不成立的。
追蹤到這里就沒(méi)思路解決問(wèn)題了,后來(lái)發(fā)現(xiàn)加載dll可以用loadlibrary,loadlibraryex,afxloadlibrary。試了下其他兩個(gè)函數(shù),loadlibraryex現(xiàn)象一樣,afxloadlibrary會(huì)拋異常。查了資料,afxloadlibrary是用來(lái)加載mfc擴(kuò)展dll的,不同的一點(diǎn)是 在加載dll前會(huì)處理線程同步。好像初始化也沒(méi)有線程同步的問(wèn)題啊。不理解。
再仔細(xì)看代碼,發(fā)現(xiàn)dllmain所在的類(lèi)文件里有 #include <afxdllx.h> , 不理解這個(gè)頭文件有什么作用,屏蔽后編譯沒(méi)影響,將dll放在必現(xiàn)的場(chǎng)景下測(cè)試,不再出現(xiàn)加載失敗的問(wèn)題。
上一篇:房屋網(wǎng)簽怎么查詢