• ベストアンサー

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

  • 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コンパイルするにはどうすればよいでしょうか? コンパイルは出来ないのでしょうか? よろしくお願いします。

  • コンパイル時のエラー

    UNIXでサーバー、クライアントのCプログラミングをテキストどおりに書いてコンパイルしたのですが、以下のエラーが出ます。gcc, ccでコンパイルすると以下のようになるのですが、これはどういうことなのでしょうか?何が原因なのでしょうか?よろしくお願いいたします。 gcc unix_server.c /var/tmp/ccvpay1f1.o: In function `main': /var/tmp/ccvpay1f1.o(.text+0x8c): undefined reference to `socket' /var/tmp/ccvpay1f1.o(.text+0x104): undefined reference to `unllnk' /var/tmp/ccvpay1f1.o(.text+0x118): undefined reference to `bind' /var/tmp/ccvpay1f1.o(.text+0x150): undefined reference to `listen' /var/tmp/ccvpay1f1.o(.text+0x1a8): undefined reference to `accept' cc unix_server.c ld: /usr/lib/cmplrs/cc/crtn.o: Error: Unresolved: rindex socket bzero bcopy unllnk bind listen accept

  • 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を付けてコンパイルする方法または この記述と同等の別の記述がありましたらご教授願います。 よろしくお願いいたします。

  • C++の関数をfortranから呼びたい。(g++, g77)

    C++の関数をfortranから呼びたい。(g++, g77) いつもお世話になっています。 現在WindowsXPにMinGWというソフトを入れて C++のコンパイルはg++を Fortranのコンパイルはg77を 使用しています。 (いずれも動作は確認できています。) 現在、以下のようなソースを使用して fortranからC++関数を呼ぼうとしていますが できておりません。 ソース内容、コンパイル方法に問題があれば ご指摘頂きたくお願いします。 ■C++ソース #include <stdio.h> #include <iostream> extern "C" void funcHelloC_(); void funcHelloC_(void) { printf("hello C world!\n"); } ■fortranソース    write(*,*) "Hello Fortran World."    call funcHelloC()    end ※実際のソースの各文先頭には、半角スペース6つ分が  記述しています。 ■コンパイル手順 D:\C>g++ -c funcHelloC.cpp D:\C>g77 -c helloFortran.f D:\C>g77 helloFortran.o funcHelloC.o helloFortran.o(.text+0x51):helloFortran.f: undefined reference to `funchelloc_' funcHelloC.o(.text+0xd):funcHelloC.cpp: undefined reference to `_ZNKSs4sizeEv' funcHelloC.o(.text+0x60):funcHelloC.cpp: undefined reference to `_ZNKSsixEj' funcHelloC.o(.text+0x9e):funcHelloC.cpp: undefined reference to `_ZNKSsixEj' funcHelloC.o(.text+0xcc):funcHelloC.cpp: undefined reference to `_ZNKSsixEj' funcHelloC.o(.text+0x12f):funcHelloC.cpp: undefined reference to `_ZNSt8ios_base4InitC1Ev' funcHelloC.o(.text+0x14a):funcHelloC.cpp: undefined reference to `_ZNSt8ios_base4InitD1Ev'

  • crypt関数を含むプログラムソースのgccを用いたコンパイルについて(C言語)

    crypt関数を含むCのプログラムソースをgccを用いてコンパイルしようとしたところ、 /cygdrive/c/DOCUME~1/○○○/LOCALS~1/Temp/ccGF0SZX.o:trip.c:(.text+0x373): undefined reference to `_crypt' collect2: ld returned 1 exit status と出てコンパイルできませんでした。 最初はcygwinのインストールの時に何かが足りていなかったのだろうと思い、すべてインストールしなおしたのですがそれでもやはりだめでした。 http://www.ninnin.net/blog/archives/000508.html に、gccなら問題なく使えると書いてあったのですが2005年の記事なので今はもう使用できなくなってしまったのでしょうか? どうかご教授お願いします。

  • res_queryについて

    Ubuntu 8.10において、 res_query関数でAレコードを引くCプログラムを書きました。 しかし、gccでコンパイルすると undefined reference to `__res_query' というエラーメッセージがでます。 ちなみにres_initは値を返します。 解決方法を教えてください。 よろしくお願いします。

  • cygwin gccでの_WinMain@16

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

  • gcc使用時のエラー

    現在openCVで画像処理プログラミングを行おうとしております。 一通りコーディングが終わった所でgccを使用してコンパイルをかけた所、 下記のようなエラーが出ました。 (コード中でhighgui.h及びcv.hをインクルードしています。) /tmp/cch6hMvI.o: In function `cvDecRefData': test.c:(.text+0xaa6): undefined reference to `cvFree_' test.c:(.text+0xb2e): undefined reference to `cvFree_' これはライブラリへのパスが通っていないものと思い、端末から export LD_LIBRARY_PATH=/usr/local/lib/ としましたが、それでもエラーが出ます。さらに下記も試してみましたが同様です。 gcc -L/usr/local/lib -o test test.c (/usr/local/lib/以下にlibopencv_core.so.2.4等が置いてあります。) pkg-configを使用すればコンパイルは通るのですが、 何がどうなってエラーになっているのかイマイチ分からず気持ちが悪いです。 1、上記エラーは共有ライブラリへのパスが通っていないために起きているものですか? 2、そうだとすれば、-Lやexport LD_LIBRARY_PATHで解決出来ないのは何故でしょう? 上記だけで情報が不足している場合は提示致しますので、 どうぞよろしくお願い致します。

  • LinuxのgccのLIBパス? (類似質問)

    Linuxのgccで、LIBのパスを設定する方法が知りたいのですが、gccについて詳しい書籍やサイトがありましたら、教えてください。 例)gcc -I/usr/local/example/include test.c /tmp/ccOFpCBo.o(.text+0x26): In function `main': : undefined reference to `EXAMPLE_1' /tmp/ccOFpCBo.o(.text+0x37): In function `main': : undefined reference to `EXAMPLE_2' /tmp/ccOFpCBo.o(.text+0x48): In function `main': : undefined reference to `EXAMPLE_3' collect2: ld はステータス1で終了しました。 また、ldとはVC6++でいう LINKのことでしょうか?

  • CygwinからVisual C++へ

    Cygwinでコンパイルしていたプログラムを、 Visual C++の cl コマンドでコンパイルしたいです。 あるプログラムを書きまして、Cygwinをインストールし、 [block.rc] BLOCKS BITMAP "block.bmp" という内容のリソースファイルを作成して、 windres block.rc -o block.o gcc -mwindows aaa.cpp block.o でちゃんとコンパイルできていました。 上記のように Visual Studio 2010 のVisual C++でコンパイルするにはどうしたらいいのかわかりません。 cl aaa.cpp block.o とやっても cl -mwindows aaa.cpp block.o とやっても、コンパイルできませんでした。 -mwindowsに代わるclコマンドのオプションを探してはみてみたものの、 -GA windowsアプリケーション用の最適化を行う というものを見つけたのでやってみましたがだめでした。 どなたか、コンパイルのアドバイスを下さい。

専門家に質問してみよう