次のエントリ: DEATH NOTE the Last name (ネタバレ) [diary]
cygwin/MinGW で Windows GUIアプリ
2007-03-14-1 / カテゴリ: [programming][win][cygwin][c] / [permlink]
朝、目覚まし時計に反応できるようになった今日この頃。2度寝しないように「うりゃ!」と叫んでなんとか頑張ってる。
cygwin の gcc でも、WinMain 関数で普通にコンパイルできるのね。
-mno-cygwin オプションで、cygwin1.dll をリンクしないネイティブアプリ、
-mwindows オプションで、GUIアプリができる。
(-mwindows がないと、exe実行時にコマンドプロンプトも表示されてしまう)
関連:bcc でWindowsプログラミングのコンパイル[2005-08-01-1]
スケルトン
skelton.c
skelton.h
makefile
実行結果
日本語もOK
リソースコンパイラは binutils パッケージに含まれる windres コマンド。
でも、アイコンの埋め込みは OK だったけど、日本語メニューは文字化け…。cygwin の windres は日本語(のメニュー)には対応していないっぽい。
日本語のメニューはMinGW日本語版の、windres (2007-03-14現在 windres214)と、mingw-jp (2007-03-14現在 mingw-jp-20040224)に含まれる libiconv-2.dll を使ってコンパイルすれば OK
cygwin パッケージにも libiconv2 があるけど、libiconv-2.dll ファイルは入ってないっぽい(libiconv2 ver 1.11-1)ので、/usr/local/bin あたりに、MinGW の windres と libiconv-2.dll を入れておく。
windres の書式は他と互換性が低いらしいけど、他を知らないから関係ないや^^;
とりあえず makefile
cygwin の gcc でも、WinMain 関数で普通にコンパイルできるのね。
-mno-cygwin オプションで、cygwin1.dll をリンクしないネイティブアプリ、
-mwindows オプションで、GUIアプリができる。
(-mwindows がないと、exe実行時にコマンドプロンプトも表示されてしまう)
関連:bcc でWindowsプログラミングのコンパイル[2005-08-01-1]
スケルトン
skelton.c
#include "skelton.h" // compile: // gcc -mno-cygwin -mwindows skelton.c int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MessageBox(NULL, "message", "title", MB_OK); return 0; }
skelton.h
#ifndef __SKELTON_H #define __SKELTON_H #include <windows.h> #endif
makefile
OBJS = skelton.o TARGET = skelton.exe OPT = -mno-cygwin -mwindows all: $(TARGET) $(TARGET): $(OBJS) gcc $(OPT) -o $@ $(OBJS) .c.o: gcc -c $< clean: -rm -f $(TARGET) $(OBJS) *~ \#* core # dependency skelton.o: skelton.h
実行結果
日本語もOK
リソースコンパイラは binutils パッケージに含まれる windres コマンド。
でも、アイコンの埋め込みは OK だったけど、日本語メニューは文字化け…。cygwin の windres は日本語(のメニュー)には対応していないっぽい。
#include "resource.h" // Menu IDM_SKEL2MENU MENU BEGIN POPUP "ファイル(&F)" BEGIN MENUITEM "終了(&X)", IDM_END END MENUITEM "ヘルプ(&H)", IDM_HELP END // Icon IDI_ICON ICON "skelton2.ico" IDI_ICONS ICON "skelton2s.ico"
日本語のメニューはMinGW日本語版の、windres (2007-03-14現在 windres214)と、mingw-jp (2007-03-14現在 mingw-jp-20040224)に含まれる libiconv-2.dll を使ってコンパイルすれば OK
cygwin パッケージにも libiconv2 があるけど、libiconv-2.dll ファイルは入ってないっぽい(libiconv2 ver 1.11-1)ので、/usr/local/bin あたりに、MinGW の windres と libiconv-2.dll を入れておく。
windres の書式は他と互換性が低いらしいけど、他を知らないから関係ないや^^;
とりあえず makefile
OBJS = skelton2.o TARGET = skelton2.exe OPT = -mno-cygwin -mwindows RES = skelton2.coff CLANG = C-SJIS .SUFFIXES: .coff .rc all: $(TARGET) .c.o: gcc -c $< .rc.coff: CLANG=$(CLANG) /usr/local/bin/windres -i $< -o $@ clean: -rm -f $(TARGET) $(OBJS) $(RES) *~ \#* core $(TARGET): $(OBJS) $(RES) gcc $(OPT) $(RES) -o $@ $(OBJS) $(LIBS) # dependency skelton2.o: skelton2.h skelton2.o: resource.h skelton2.coff: skelton2.rc skelton2.coff: resource.h
次のエントリ: DEATH NOTE the Last name (ネタバレ) [diary]
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2013-05-02 16:12