• ベストアンサー

timeGetTime関数を使用できません

お世話になります。 今windowsプログラミングを制作しているのですが、タイトルの通りtimeGetTime関数がコンパイルで弾かれてしまいます。 エラー内容: undefined reference to`_timeGetTime@0' コンパイル方法: gcc -mwindows -o win win.c コンパイルオプションが原因かと思い調べてみたのですがそれらしいオプションが見当たりませんでした。 原因が分かる方がいましたら、いつでもいいのでご指導お願いします。

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

  • ベストアンサー
noname#208124
noname#208124
回答No.3

gccで-lの位置は重要です あるファイルのシンボルは後ろのファイルから探します gcc -mwindows -lwinmm -o win win.c はだめでも gcc -mwindows -o win win.c -lwinmm でいけるかもしれません

smily_k_c
質問者

お礼

gcc -mwindows -o win win.c -lwinmm でコンパイルして使うことが出来ました! 皆様どうもありがとうございました。

その他の回答 (4)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

> どこか勉強するのにいいサイトはありませんでしょうか? サイトというより、manまたはinfoでドキュメントを読んでください。 bash上で man gcc または info gcc とすれば表示されます。

smily_k_c
質問者

お礼

なるほど、その発想はありませんでした。 皆様、いろいろとありがとうございました。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

#1です。 すでに回答が出ているように、-lwinmmの位置が重要です。win.cより後に書くようにしてください。 なお、winmm.libをいくら探しても見つかりません。 /lib/w32api/libwinmm.a が該当するファイルです。

smily_k_c
質問者

お礼

何度もありがとうございます。 -lwinmmを後ろにつけることで解決することが出来ました。 重ねて質問して申し訳ないのですが、皆様はコンパイルオプションはある程度勉強して覚えているのでしょうか? コンパイルで引っかかる度に質問するのは失礼なので勉強しようと思っているのですが、どこか勉強するのにいいサイトはありませんでしょうか? 早く皆さんのようになりたいので頑張ります。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

 とりあえずあなたのパソコンの中でwinmm.libがどこにあるのか調べてみてください。winmm.libがライブラリ検索パスに入っていればANo.1の方の指摘で問題ないです。  今、私のパソコンにはC#2005ExpとVB2005しか入っていないのでC++的なインポートライブラリが一般的にどこに置かれるのか調べる事ができませんでしたが、gccよりもclあたりを使った方が良いような気がしなくもないです。

smily_k_c
質問者

お礼

問題が解決しました、お騒がせして申し訳ないです。 clというのも調べてみようと思います。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

-lwinmmを付ければ解決するのでは?

smily_k_c
質問者

補足

お早いご返事ありがとうございます。 gcc -mwindows -lwinmm -o win win.c このコンパイルオプションでやってみましたが、同じエラーがでてしまいました・・・

関連するQ&A