Visual Studio 2010 : LNK4042
自分も最初ビビったのでメモ。
もし、namespaceを用いて
// Hoge/HogeHoge.hpp namespace Hoge { class HogeHoge { /* ... */ }; } // Hoge/HogeHoge.cpp namespace Hoge { // ... }
// Piyo/HogeHoge.hpp namespace Piyo { class HogeHoge { /* ... */ }; // Piyo/HogeHoge.cpp namespace Piyo { // ... }
としてビルドした場合、何も設定していないと
warning LNK4042: object specified more than once; extras ignored
が出ることがあります。
これは、Hoge/HogeHoge.cppとPiyo/HogeHoge.cppで同じ名前のobjファイルが同じディレクトリに作成されることに問題があります。
もし、このような事態を避けたいと思ったら、
projectのブロパティーから、C/C++ -> Output Files -> Object File Name を
$(IntDir)/%(RelativeDir)/
と変更することで、それぞれHoge/HogeHoge.objとPiyo/Hogehoge.objとして別のディレクトリに
作成されます。(僕の場合だと、もともと$(IntDir)となっていました)