2010-07-31 80 views
3

當我嘗試啓動我在C++中創建的程序時,出現此錯誤。它可以在我的另一臺電腦(XP SP3 32bit)上正常工作,但不能在我的Windows 7 64位版本上正常工作。 當我在程序上運行Dependency Walker時,它告訴我IESHIMS.dll丟失,但是它在32位和64位版本的Internet Explorer文件夾中。「應用程序未能正確初始化(0xc000007b)。」

任何人都可以幫助我嗎?

回答

16

錯誤代碼是STATUS_INVALID_IMAGE_FORMAT,「波波要麼沒有設計在Windows上運行或包含錯誤,請嘗試重新安裝該程序使用原始安裝介質或聯繫您的系統管理員或支持的軟件供應商。 「

對於64位版本的Windows,這有點過時,90%的可能性是您的32位程序試圖加載64位DLL。 Windows有很多功能可以防止這種情況發生。文件系統虛擬化可確保將來自c:\ windows \ system32的DLL加載重定向到32位DLL的主目錄c:\ windows \ syswow64。註冊表虛擬化可確保COM服務器與COM客戶端的位元相匹配。

你做的事情繞過了這些反措施。也許你使用了SetDllDirectory()。或者,您將DLL複製到與EXE相同的文件夾中。或者你希望系統的PATH環境變量可以幫助你的程序找到正確的DLL。就像那樣,從你的問題來看,這是不明確的。應該在Windows事件日誌中記錄它(不是100%確定)。如果一切都失敗了,SysInternals的ProcMon工具可以顯示你正在加載的文件。

+1

嗯沒關係。好吧,我看到我安裝了64位版本的MySQL ..我不確定這是否會成爲問題,因爲有更多的DLL加載,但當然這會導致程序試圖從MySQL加載64位驅動程序。 讓我們希望32位版本不會與64位版本衝突..! – lordstyx 2010-07-31 19:19:08

+0

是的,那樣做。 – 2010-07-31 19:20:12

+0

非常感謝!現在已經修復了。 – lordstyx 2010-07-31 19:52:37