今天在寫代碼的時(shí)候出現(xiàn)一個(gè)非常奇怪的錯(cuò)誤。問(wèn)題是這樣的:
在一個(gè)EXE文件中l(wèi)oad一個(gè)DLL文件,使用的方法是loadlibary,使用指定的DLL名稱作為參數(shù)。
1。第一次調(diào)用LOADLIBARY,返回NULL,錯(cuò)誤號(hào)是126,查詢?cè)蚴钦也坏街付K。
于是我到EXE所在的目錄下找,文件在那里,我可以肯定的確認(rèn)在那里,于是我重新編譯工程,又實(shí)驗(yàn)了一次,結(jié)果是一樣的。
我開(kāi)始懷疑LoadLibary的問(wèn)題,我發(fā)現(xiàn)這個(gè)目錄下有其他DLL,然后將參數(shù)改為別的DLL,結(jié)果發(fā)現(xiàn)load成功。
于是我給哪個(gè)DLL改了一個(gè)名字,繼續(xù)嘗試,結(jié)果仍然失敗。我開(kāi)始懷疑DLL本身的問(wèn)題,是不是入口的地方出錯(cuò),但LOADLIBARY的返回說(shuō)明不是這個(gè)原因,而且我也有TRACE在那邊。
于是我急了,從別的地方復(fù)制一個(gè)我在別的工程調(diào)用成功的DLL到當(dāng)前目錄來(lái),一調(diào)用,結(jié)果同樣出錯(cuò)。
這下我可沒(méi)有主意了,為什么原來(lái)成功的DLL結(jié)果不行了呢?
我又回到原來(lái)調(diào)用成功的工程中試驗(yàn)了一下,結(jié)果仍然成功。
然后我又調(diào)用EXE目錄下的其他幾個(gè)DLL,發(fā)現(xiàn)不是每個(gè)都成功。我覺(jué)得這個(gè)是一個(gè)不可思異的問(wèn)題,暈啊。。。
無(wú)意中我用View dependencies打開(kāi)了DLL,結(jié)果我看出了點(diǎn)問(wèn)題,于是我一嘗試,這下對(duì)了。
大家能猜到這是什么低級(jí)錯(cuò)誤嗎?
給自己長(zhǎng)個(gè)記性。