作者tropical72 (藍影)
看板C_and_CPP
標題Re: [心得] 關於在 Windows 下建立 *.exe 資源檔
時間Tue Dec 13 04:01:12 2011
※ 引述《purpose (purpose)》之銘言:
: D:\Desktop>rc haha.rc
: D:\Desktop>cl /c goo.c
: D:\Desktop>link goo.obj haha.RES
: D:\Desktop>goo
: Hello World
: 如果要用 mingw 建資源,用 ResEdit 建好 haha.rc 跟 resource.h,接著執行如下
: D:\Desktop>windres haha.rc haha.res
: D:\Desktop>gcc goo.c haha.res
: haha.res: file not recognized: File format not recognized
: collect2: ld returned 1 exit status
: D:\Desktop>windres haha.rc haha.res.o
: D:\Desktop>gcc goo.c haha.res.o
: 這樣就可以了。
近來在摸 Win32 於 gcc 下之編譯,
所幸版上已有一篇優質文,所費時間不至於太離譜,
為簡化問題,附上手邊測試之 resource script。
環境為 tdm-gcc-4.5.2 。
menu_one.rc
#include "resource.h"
IDR_MYMENU MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "G&o" , ID_STUFF_GO
MENUITEM "E&xit", ID_FILE_EXIT
END
END
IDI_MYICON ICON "EdisonX.ico"
menu_one.rc 最後會留個 new line
vc.bat
RC.exe menu_one.rc
CL.exe menu_one.c menu_one.res user32.lib
del menu_one.obj menu_one.RES
pause
vc.bat 是可生成 menu_one.exe,且可正常執行的。問題在 gcc.bat
gcc.bat
gcc.exe -c menu_one.c
windres.exe menu_one.rc resource.o
gcc.exe menu_one.o resource.o -o menu_one.exe -mwindows
pause
重點在 windres 那行,會陷入 dead loop,
cmd line output
windres.exe: menu_one.rc:2: syntax error
程序嘗試寫入到一個不存在的管道。
程序嘗試寫入到一個不存在的管道。
程序嘗試寫入到一個不存在的管道。
程序嘗試寫入到一個不存在的管道。
程序嘗試寫入到一個不存在的管道。
windres.exe: menu_one.rc:2: syntax error
...
一直重覆以上敘述,直至 console 掛掉為止。請教 windres flag 是否下達指令有誤?
謝謝各位先進不吝指導,感激不盡。
--
No matter how gifted you are,
alone, can not change the world.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.78.41
推 purpose:menu_one.rc 的第二行,好像是 resource.h,確認該檔正確 12/13 09:12
→ tropical72:p 大之意為 ? 第一行是include resource.h,第二行不是 12/13 15:02
推 purpose:上面猜錯了,把 gcc.bat 檔名改成 gcc2.bat 就行了 12/13 15:26
→ tropical72:!! p大太神了,我卡了一晚最後竟改檔名就過.感激不盡!! 12/13 15:33
→ angleevil:有p神快拜<(__)> 12/13 16:12