プロが教えるわが家の防犯対策術!

Cygwinを使ってコンパイルしたんですが
============================
/cygdrive/c/DOCUME~1/(コンパイルしたファイルのパス).c:(.text+0x187): undefi
ned reference to `_(関数名)'
============================
というメッセージがでてきてコンパイルできません。
原因は何なのでしょうか?

A 回答 (4件)

Google 翻訳では、Undefined reference to を 「への未定義の参照」 と訳していました。

(今調べた)

関数が未定義、つまりプロトタイプ宣言ができていないということでしょうか?
C言語でしたらプロトタイプ宣言がなくてもいけると思いますが…

もしかしたら、関数自体の処理がどこにもないとか、関数名を間違えた、あるいは#includeしていないヘッダーファイルがあるかもしれませんね。

私の環境はBccだからエラーメッセージは違うと思いますが、私も前、getch()を使ったのにconio.hをインクルードしていないことからエラーが起きました。前Bccの前にはLSICを使っていて、それではconio.hなどインクルードしなくても使えたような気がして、ずっと悩んでいました。

一応私も初心者ですし、環境が違うので何とも言えませんが、とりあえず今あげたことかもしれません(あまり期待はしないでください)
    • good
    • 0

コンパイルエラーではなくてリンクエラーです。



(関数名)
のところに書いてある名前の関数の実体がない、と言われています。
    • good
    • 0

こんにちは


関数名が定義されていないと叫んでいる原因は色々あると思いますが、タイプミスに一票入れます。
    • good
    • 0

直接の原因はエラーメッセージのとおりです。


根本的な原因は、ソース、正確なメッセージ、およびMakefile(またはコンパイルに用いた実際コマンド)を補足していただかないと分かりません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!