1章読んだ

VC8でコンパイルしたいのだが、リンクでエラーが出て失敗する。

1>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl std::operator+<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z) は既に IlmImf.lib(ImfInputFile.obj) で定義されています。
1>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl std::operator+<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,char const *)" (??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z) は既に IlmImf.lib(ImfInputFile.obj) で定義されています。
1>msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char const *)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z) は既に api.obj で定義されています。

VC8だと添付のOpenEXRがよろしくないらしく、自前でビルドする必要があるっぽい。
どうもリンクまわりがよくわからないので嵌るとどうしようもない。
うちの書棚に積んであるLinkers&Loadersあたりを読んだらわかるのかなぁ。


http://weeacc.g.hatena.ne.jp/pcod/
http://72.14.235.104/search?q=cache:dh5Xs2Js-fYJ:ircdaemon.dyndns.org:8080/thesis/item/13+pbrt+MSVCP80D.dll&hl=ja&ct=clnk&cd=1&gl=jp&client=firefox-a