2009年12月4日

[茶包]Compiler Error - xxxx.tmp is not a vaild Win32 resource file (VS200x 無法編譯的錯誤 - xxxx.tmp 不是有效的 Win32 資源檔)

今天有同事突然跑來求救,說原本可以編譯的工具程式突然不能編譯了

跑去看了一下錯誤訊息,結果只出現:
「E:\xxxx\...\obj\Debug\xxxx.tmp 不是有效的 Win32 資源檔」
這樣的訊息

看起來真詭異,這種暫存檔案居然會變成不是有效的?!
第一個想法,就是先把該訊息所顯示的 obj 目錄更名
看看重新編譯是否能恢復 ... 結果不行(而且同事已經試過這方法了=_=b)

實在很離奇,那麼來檢查檔是否唯讀吧 ... 也沒有!!
這下糗了,本想幫同事幾分鐘內解決的小忙,結果居然是這種怪問題 XD
這樣史萊姆的面子會掛不住滴 ... 唔,有股危機感 ~



看了看,發現該工具專案目錄有使用 SVN 作控管
開始懷疑是否有檔案被鎖定 ... 的瞬間,又發現 obj 目錄根本就沒被控管
(看來我容易疑神疑鬼的毛病很難改哩)

慘了,這下只剩下最後一步 ... 請教 Google 大神!! (別打我)
把錯誤訊息輸入 ... 喔喔 !! 馬上就有結果了 ~ (這下搞定了)

" 先砍掉 => c:\xxxx\...\obj 裡的資料再試試 "
疑?這句話好眼熟,不就是我們大家都試過的嗎? orz
其他的搜尋結果也風馬牛不相干 ... 最後只好投降

稍微詢問了一下,原來同事有重灌過電腦,其他的所有設定都沒改過
沒辦法,於是請同事先等等,我回我的座位上查一下網路

回到座位上,深呼吸兩下 (沒必要吧)
努力推測這句錯誤訊息的原文是什麼關鍵字:
not valid win32 resource file ? hmm 試試看 ~

登登,第一行就寫 Compiler Error CS1583 (CSC583.tmp is not a vaild Win32 resource file)
點進去看,果然,討論的就是這問題,突然無法編譯專案

突然看到一句很有趣的留言:" Try Clean the Application Icon !! "
喔?試著清除你的應用程式小圖示?!
確實,專案檔本身就會有預設資源是個圖示,要用來顯示在左上角的
真的會是這錯誤造成無法編譯嗎?(笑)

抱著疑惑,把這訊息傳給同事,實驗的結果 ... Boom ! 茶包消滅 !
果然是因為應用程式找不到專案要用的顯示圖示(icon)資源檔造成的
這還真的很離奇 ... -_-

個人的推論,有可能是因為重灌電腦,或是因為 SVN 控管
造成不同環境的資源放置位置有所出入,導致專案找不到資源
沒想到微軟的編譯器會在這小地方笨到有剩 XD

唉,千錯萬錯,都是微軟的錯 (茶)

幫同事解決問題,又能學到經驗,一舉兩得
特於此分享,以免後人又找不到繁中的網頁

以上 ^_^

沒有留言: