2013-11-23 110 views
0

我想添加一個資源文件,以在Code :: Blocks中爲我的win32窗體應用程序添加一個圖標。我創建了resource.rc文件並將其添加到我的項目中,並將我的圖標放在項目的根文件夾(源文件所在的位置),並且我一直收到預處理失敗的錯誤。Code :: Blocks資源預處理錯誤

這是我resource.rc文件是什麼樣子

#ifndef _resource_rc 
#define _resource_rc 

MAINICON ICON "icon1.ico" 

#endif 

main.cpp文件只是一個不變的win32窗體應用程序,以及項目本身除了添加resource.rc文件到項目不變。

構建信息錯誤是

||preprocessing failed.| 
||=== Build finished: 1 errors, 0 warnings ===| 

並生成日誌是

gcc: Files\: No such file or directory 
gcc: \(x86\)\CodeBlocks\MinGW\include: No such file or directory 
windres.exe: preprocessing failed. 
Process terminated with status 1 (0 minutes, 0 seconds) 
1 errors, 0 warnings 

我有檢查,以確保安裝代碼:: Blocks的地方,它位於\Program Files(x86)\地方,因爲它似乎gcc正在查看名爲\(x86)\的文件夾。這可能是問題嗎?

如果我刪除資源文件,應用程序將編譯並正確運行。

感謝您的任何幫助。

編輯:我已經啓用完整的編譯器輸出,這裏是什麼是跑:

windres.exe -i C:\Users\user\Desktop\MENOET~1\resource.rc -J rc -o obj\Debug\resource.res -O coff -I"C:\Program Files (x86)\CodeBlocks\MinGW\include" 
gcc: Files\: No such file or directory 
gcc: \(x86\)\CodeBlocks\MinGW\include: No such file or directory 
windres.exe: preprocessing failed. 
Process terminated with status 1 (0 minutes, 0 seconds) 
1 errors, 0 warnings 

我已經注意到的是,MENOET〜1是某種我的項目目錄和縮略名不是它的實際名稱。不知道這與它有什麼關係,我似乎也無法改變它。

edit2:我設法解決它,但我寧可不這樣做。我做的是將MingGW複製到C:\,然後進入設置 - >編譯器和調試器 - >搜索目錄 - >資源編譯器,並將該路徑設置爲C:\ MingGW \ include。這可以緩解所有的錯誤,並且構建成功,但我寧願不必在我的根目錄C:\目錄下有MingGW的副本。有沒有什麼辦法可以解決這個問題,以便它能夠與原始路徑一起工作?我可以想象它只是在文件名中的空格上去了,但我不知道在哪裏找到插入引號的構建變量。

+0

資源編譯器搜索目錄我不禁注意到這一點:'\(86 \)\' - 作爲'\'括號內。我剛剛檢查了「Settings-> Compiler-> Search directories-> Resource compiler」的設置,發現它是空的。雖然'... directories-> Compiler'下的條目是'C:\ Program Files(x86)\ CodeBlocks \ MinGW \ include'。您可以隨時嘗試重新安裝它。我之所以這樣做,是因爲我早已被遺忘的一個原因。 ***編輯:***的意思是說**(1)**沒有包含文件在你的resource.rc中(我希望resource.h,它有一些像'#define MAINICON 100')**( 2)** Checkout ResEdit - www.resedit.net – enhzflep

+0

@enhzflep我會嘗試從代碼塊中刪除搜索目錄,看看會發生什麼,雖然我確實已經運行到現在,儘管不是我想要的。感謝您的建議。 –

回答

0

根據我的扣除和enhzflep的設置,我已經解決了這個問題。該問題是由空格和字符(如括號位於資源編譯器的搜索目錄的路徑名稱中)引起的。

爲了解決這個問題,要麼將資源編譯器搜索目錄中的任何目錄移動到C:\中,以便從其名稱中刪除空格,或者完全從其代碼塊中刪除其引用。

這兩種方法都奏效。將MingGW目錄移動到C:\,然後將新搜索路徑設置爲C:\ MingGW \ include,修復了此錯誤,並在資源編譯器菜單中刪除了對該文件夾的任何引用。

兩者都允許應用程序成功編譯。

下可以找到

Settings -> Compiler and debugger -> Search directories -> Resource compiler