いてづきブログ

情シスでやってみたことの備忘録

Lnk2001ではまった話

C++にはよくある(らしい)リンクエラーで詰まって丸一日使う羽目になりましたorz

今回の場合、同一プロジェクト内にcpp,hppともにあるのに、ビルドするとhppに書いてあるコンストラクタが未解決でLnk2001エラーorz

ちゃんとcppの方には書いてあるのになー。継承関係かなー。とかいろいろリンカーとか記述順とかいろいろいじっても変わらず、さんざんググった結果、以下のブログのやり方でうまくいきました。

ソースコードやファイル名自体に誤りがなくとも、LNK2001は起こる。 - 南瓜パフェに届く色


今回のソースは、最初はhppに実装も全部書いてあったんですね。
しかし、規約で実装はcppに書くことになって、既存の実装分もcppに移したんですが、項目の種類がもとのままだったんですね。
なので、hppを「C/C++ヘッダー」に、cppを「C/C++コンパイラ」に変更してうまくいくようになりました。

C++のエラーは理由が本当に分かりづらいorz
これについては経験が物を言いますね。
でもその経験で価値に差がつくことはないっていう(涙)