はじめに
Visual Studio 2005で作成したソリューションをVisual Studio 2015でビルドした際に以下のエラーになりました。
nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 は既に LIBCMT.lib(dll_dllmain_stub.obj) で定義されています。
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は既に LIBCMT.lib(new_scalar.obj) で定義されています。
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) は既に LIBCMT.lib(delete_scalar.obj) で定義されています。
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??_U@YAPAXI@Z) は既に LIBCMT.lib(new_array.obj) で定義されています。
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??_V@YAXPAX@Z) は既に LIBCMT.lib(delete_array.obj) で定義されています。
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
対処方法が以下のページに書いてありました。
isobe.exblog.jp
対処方法
1.ソリューションのプロパティからリンカー→入力→「特定の既定のライブラリの無視」に以下のライブラリを指定します。
Nafxcw.lib Libcmt.lib
2.続いて、追加の依存ファイルに以下のライブラリの順で追加します。
Nafxcw.lib;Libcmt.lib;
注意事項
リリースビルドの場合はNafxcw.libとLibcmt.libですが、デバッグビルドはNafxcwd.libとLibcmtd.libになります。ファイル名が違うので注意してください。