Visual Studio_LNK2001 外部シンボル "xxxxx" は未解決です

問題ファイルは hogehoge.obj 。

関数が宣言されているのに、定義されていない場合に出る。

 

詳しく

関数のプロトタイプだけしかなくとも ( 定義されていなくとも )
ソースはコンパイルできるので、 hogehoge.obj が生成される。

リンカは、オブジェクトファイルをリンクする前に、
他のオブジェクトファイルやライブラリファイルの中に関数の定義があるか検索し、
正しくリンクできるかどうかを確認。定義が存在しないとこのエラー。

 

対応&原因

外部シンボルとして提示されたシンボルが、
自分で定義したのか、ライブラリによって提供されるものかで対応法が変わる。

1) 自分で定義
・スペルミス・大文字小文字の誤り。
・ソースがプロジェクトに含まれていない。
etc., etc.

2) ライブラリによって提供
hoge.lib は存在してもリンクされていない。
・ライブラリのバージョンを混在して使用している。
etc., etc.

↓ に原因が「ソース」「コンパイルとリンク」「エクスポート」「出力解釈」に分かれて載っている。
https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2010/f6xx1b1z(v=vs.100)

 

 

こちらから。
http://www.nitoyon.com/vc/reference/error.htm#content_1_40
https://msdn.microsoft.com/ja-jp/library/ba1z7822.aspx

以上。

 --自環境での原因--

.dll ファイルと .lib ファイルが必要だった。
.dll ファイルを読み込んでいるっぽいソースを発見したが、.lib はどこ ?

プロジェクトのプロパティを開き、[ リンカー ] > [ 入力 ] > [ 追加の依存ファイル ]
を調べたが、該当の .lib がない。

いた。プロジェクト.vcxproj.filters を開くと
<Library Include="cps.lib"> と書いてあった。
というか、プロジェクトのソリューションエクスプローラに LIB フォルダが存在しその中にいた。