日々精進時々堕落

| CALENDAR | RECOMMEND | ENTRY | COMMENT | TRACKBACK | CATEGORY | ARCHIVE | LINK | PROFILE | OTHERS |
スポンサーサイト 2010.10.02 Saturday

一定期間更新がないため広告を表示しています

| - | - | - | スポンサードリンク |
.cと.cppの罠 2006.07.23 Sunday
この土日は引きこもってプログラム書いてたわけなんですが、
さっきちょっとした罠にかかってたので、一応書いときます。


Cをある程度書いたことのある人なら必ず一度は見たことがあるコンパイルエラーがあります。
それは「未解決の外部シンボル参照エラー」というやつです。
VCとかだと
error LINK????: 未解決の外部シンボル ????が????で参照されました。
fatal error LNK????: 外部参照1が未解決です。

とか出てくる奴です。正確にはリンクエラーなのですけどね。

簡単に言うと、(といってもCわかんない人には簡単じゃないけど)
extern宣言とかで、関数とかグローバル変数とかとりあえずあることにしといて
コンパイル通してみたけれど、いざリンクの時点になってみたら、
実態がどこにもねーじゃんよヽ(`Д´)ノウワァァァン

と、いうことです。

まぁ大概こんなエラーは、ヘッダーか実態のどっちかの関数名間違ってるか、
プロトタイプ宣言の引数か返り値の型間違えてるとか、実態作るの忘れてたとかなんですが、
どうも今回でたやつをいくら見直してみても、問題がないんですよね。
ちゃんと型もあってるし、名前も問題ない。実態もちゃんとある。
ふぅむ。なぜだ。なぜなのだ。ヽ(`Д´#)ノムキー
色々考えてみてもどうにも分からないので、ここは最後の手段、
3年G組 Google先生にお伺いを立ててみました。
よくあるエラーなので、特定の条件に関しては見つかりそうにもなさそうだなぁと、
あまり期待もせずに検索かけてみたのですが、検索1ページ目に以下のようなものを発見しました。



!?

VCって.cと.cppからできるオブジェクトファイルに違いがちゃんとあるのか!?
自分のVCのプロジェクトのソースリストを見てみる。
○○.cpp, □□.cpp, △△.cpp, ・・・・・・ ☆☆.c
あったよ。しかもばっちりエラー出てる関数の実態定義してるファイルだよ。
Targa読み込む関数で、よそから引っ張ってきたのを改造したのですが、ファイル名が.cのままでした。
ということで直してみる・・・・。

〜ビルド中 しばらくお待ちください 〜

・・・・・・通った。
泣けるねこれは。あ〜、.cと.cppでちゃんと分けてるんですねVCは。
一つ勉強になりました。皆さんもお気をつけあれ。
| プログラム | comments(0) | trackbacks(0) | Dr.Garugari |
スポンサーサイト 2010.10.02 Saturday
| - | - | - | スポンサードリンク |
Comment








Trackback
この記事のトラックバックURL: http://garugari.jugem.jp/trackback/333
<< NEW | TOP | OLD>>