• ベストアンサー

cygwin gccでの_WinMain@16

WinXP SP2上でcygwinを用いてプログラミングをしています。 QNo.580169 にもあったのですが、undefined reference to `_WinMain@16` で困っています。 二つのソースファイルをそれぞれコンパイルして、それをリンクさせて実行ファイルを作ろうと思っているのですが、main関数が書かれていないソースファイルをコンパイルしようとすると上のメッセージが出ます。どのようにして回避できるでしょうか。 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#9119
noname#9119
回答No.1

コンパイルするときに実行ファイルを作ろうとしているからじゃないですか? あとでリンクする場合は、-c オプションをつけてオブジェクトファイルを作るだけにします。

ash_ef
質問者

お礼

そういうことだったのですね。無事makeが完了しました。 これからはもう少しヘルプファイルを熟読してから質問しようと思います。 ありがとうございました。

関連するQ&A

  • Windowsコモンコントロールのcygwin/gccコンパイルエラー

    以下のサイトのようなWindowsコモンコントロールのプログラムをcygwin/gccコンパイルするとエラーがでます。 (sourceのサイト) http://wisdom.sakura.ne.jp/system/winapi/common/common16.html (ビルドコマンド) gcc -mwindows -mno-cygwin -o main.exe main.cpp (エラー出力) undefined reference to `_ImageList_Destroy@4' undefined reference to `_InitCommonControls@0' undefined reference to `_ImageList_Create@20' undefined reference to `_ImageList_ReplaceIcon@12' undefined reference to `_ImageList_ReplaceIcon@12' collect2: ld returned 1 exit status make: *** [main.exe] Error 1 Windowsコモンコントロールを含んだプログラムをcygwin/gccコンパイルするにはどうすればよいでしょうか? コンパイルは出来ないのでしょうか? よろしくお願いします。

  • cygwinのgccが、エラーになってしまいます。

    テストプログラム $ cat test.c #include <stdio.h> int main (void) { printf("Hello, World!\n"); return 0; } これを、コンパイルすると $ gcc test.c gcc: error trying to exec '/usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1.exe': execv: Bad address /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../libcygwin.a(libcmain.o):(.text+0xba): undefined reference to `_WinMain@16' collect2: ld はステータス 1 で終了しました と、このようなエラーが出てきました。 ファイルを確認しても、何も作られていません。 $ ls test.c 対処方法を、ご教示願います。

  • cygwin gcc c99 での isnormal と strtold の使用

    Cygwinのgccで-std=c99オプションを付けて 以下のコードをコンパイルしようとしています。 #include <stdlib.h> #include <math.h> int main() { isnormal(0.123); strtold("0.123", NULL); return 0 ; } $> gcc -std=c99 test_strtold.c ですが、コンパイルできず、2つの関数とも'undefined reference'になります。 -std=c99を付けてコンパイルする方法または この記述と同等の別の記述がありましたらご教授願います。 よろしくお願いいたします。

  • cygwinでのgcc

    畏れ入ります。 UNIXどタコですm(__)m 最近CYGWINで簡単にUNIXが体験できるということで早速インストールしました。 KDEとGNOME無事起動しました。 で、実は図書館で「Xlibで簡単プログラミング」というのを借りてきたので、ちょっと遊んでみようと思いとりあえずc言語がコンパイル、実行できるかどうかやってみたのですがうまくいきませんでした。 #include <stdio.h> int main(){ printf("HelloWorld \n"); } のようなプログラムをvimで作成するところまではうまくいきました。homeディレクトリに作成されていました。 それで gcc hello.c とやればよいのですよね?! 実は文字がたくさん出て、コンパイルできたのかどうか・・・?そして、a.outというファイルができるのですよね?間違っていますでしょうか? とりあえず、できていません・・・(>_<) ./a.out としても、no fileです・・・ なにか間違っていますでしょうか?

  • Cygwinのgccについて

    駄文で申し訳ありません。 cygwinのgccでC言語で作成したプログラムをコンパイルしたんですが、以下のようなコメントが返ってきました。 これはどういう意味なんでしょうか?warningなんで無視できるのでしょうか? ご教授下さい。 $gcc sample.c sample.c:60:2: warning: no newline at end of file /cygdrive/c/DOCUME^1/ユーザ名/LOCALS^1/Temp/cc6gA6nk.o:sample.c(.text+0xd7): undefined reference to _perro' collect2: ld returned 1 exit status

  • Cygwinでの自作ヘッダファイルの使用方法

    Cygwinでソースをコンパイルすると cygdrive/c/DOCUME~1/user/..../cc5uZTak.o:submain.c: undefined reference to 'parameter' と言うエラーが出ます。 ヘッダファイルも宣言しているのですが...コンパイルが通りません ヘッダファイルの位置が行けないのでしょうか?

  • CygwinとGrwinが使えない

    Cygwinは正常にインストールされています(と思います)。 その後Grwinをインストールしたのですがデモプログラムなどをコンパイルしようとするとエラーが出てしまいます。 #include <GrWin.h> main(){ GWinit(); GWopen(0); GWindow(-1,-1,1,1); GWline(-1,-1,1,1); } 上のようなプログラムをコンパイルしようとすると、 /tmp/cceporaS.o:test2.c:(.text+0x40): undefined reference to `_***' というエラーが出てしまいます。***の部分は上で使った関数(GWinitなど)です。 確認したことは C:\cygwin\usr\includeにGrWin.hがあること。 C:\cygwin\libにlibCalcomp.a、libGrWin.a、libGrWin0.a、libcpgplot.a、libpgplot.aがあること。 コンパイルの方法はcc test.c -o testです。 これ以上どうすればいいか分かりません。アドバイスお願いします。

  • gccでの分割コンパイルについて

    参考書に分割コンパイルの方法が書いてなかったので質問させていただきます。 現在3つのソースファイルがあります。 1.header.h (関数プロトタイプ宣言) 2.kansu.c  (関数の定義) 3.main.c  (main()関数) ここで、main.cがheader.hをincludeしています。 このときの分割コンパイルはどのようにしたら良いのでしょうか?Makefileを作成するのでしょうか? 自分自身分割コンパイルの経験はありません。 環境は Cygwinを使ってのWindows XP コンパイラはgcc もうひとつは Visual Studio.netを使っての環境です。

  • cygwinでのエラーについて

    cygwinでコンパイルしようとしたところ次のようなエラーが表示されました。 undefined reference to '_imp_iob' collect2: ld returned 1 exit status どのような意味なのでしょうか?対処法なども教えてください。

  • 【gcc・cygwin】multiple definitionエラーの解決法

    こんにちは。 C言語のプログラミングをしているのですが、 multiple definition of '関数名'と出てしまいます。 ・コンパイルするファイル program1.c(main文) program2.c(関数) program3.c(関数) すべてのソースファイルが、 header.hをincludeしています。 header.hではすべての関数のプロトタイプ宣言がされています。 program2.cに書いてある関数、test()はすべてのソースファイルで使用しています。 ・cygwin上で実行したコマンド gcc -Wall program1.c program2.c program3.c -o test ・エラーの文章 (パス省略)/ccst1v2u.o:program2.c:(.text+0x0): mult iple definition of `_test' (パス省略)/ccyUr2Ku.o:program1.c:(.text+0x0): first defi ned here このような事態に陥った場合の解決方法はどのようにすればよいでしょうか? 先輩から引き継いだ、もともと一つのソースファイルに書かれていた多数の関数を、利便性のために分割したところこのようなエラーが発生しました。 先輩から引き継いだもののため、本当の関数名など細かいことをこちらに書き込めないのですが、 出来る範囲で補足いたします。 どうかよろしくお願いいたします。