向C前進生手除錯辛酸史 - GetLastError 193

從來沒寫過C,因為Thirt Party提供的API需要用C++呼叫所提供的dll功能,於是就一邊扒文一邊寫C++。

從網路下載Dev C++ 5.6.3,並在克服Winsock錯誤後,順利的將供應商提供的範例編譯成功。
高興沒多久又撞壁了,查啊查,最後透過GetLastError()得到193錯誤碼,即%1 is not a valid Win32 app。然後在網上爬了又爬,不少人有這問題,但就是沒找到可以立即解決的說明,對C++全面陌生的生手真是頭痛的問題啊~

最近才有人用同一支DLL對接成功,因此可確定廠商提供的dll絕對不是問題,因此方向轉往編譯器上。

感謝網友文章熱心介紹,下載了Dependency Walker (可以在http://www.dependencywalker.com/下載),誤打誤撞發現選的是Win32 Console但編譯出的執行檔其實是64位元,果然是設定不正確,才會產生LoadLibary時出現193-%1 is not a valid Win32的問題。
左圖中執行檔左方標示64表示此執行檔為64位元,這時執行就出現193錯誤碼;右圖執行檔左方未出現64表示非64位元,這時執行就OK。


解決方式:

將Dev C++ 5.6.3上使用專案,設定使用32 bit編譯器,若預設不是32 bit編譯器,個別專案都記得要設定。
1. 專案→專案選項

2. 點選「編譯器訊息」,編譯器選擇「TDM-GCC 4.8.1 32-bit Release」,按確定。

3. 編譯

Yes,成功了。希望對面臨同樣問題的人有所幫助^-^。


這個網誌中的熱門文章

沒印表機沒關係 便利商店找印去

被時代淘汱的英文怎麼說

探訪神秘的烏法魯神殿

色情廣告視窗關不掉? 動手解解看吧~

玩轉水晶石工作室 妝點個人部落