■64335 / inTopicNo.1) |
.vcxprojと.vcprojの変換について |
□投稿者/ howling (101回)-(2012/11/27(Tue) 12:41:25)
|
分類:[C++/CLI]
お世話になっております。
相変わらずVS2010 / Windows7にてC#及びC++の開発を行っております。
さて、前スレッド(http://bbs.wankuma.com/index.cgi?mode=al2&namber=64298)にて、 コンパイラオプションに/CLRを指定してコンパイルを行ったところ、 色々と問題は出たのですが、まだ外せていない内容として、次の2つが残っている状態です。
A. error LNK2005: __invoke_watson は既に MSVCRTD.lib(MSVCR100D.dll) で定義されています。 (こっちは内容からして、DLLとlibが混在しているために出ているようなので、別途調査します)
B. error LNK2019: 未解決の外部シンボル "public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ) が関数 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::append(unsigned int,char)" (?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z) で参照されました。 C:パス:リンク先lib名.lib(リンク先lib名.obj)
error LNK2019: 未解決の外部シンボル "public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ) が関数 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::assign(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned int,unsigned int)" (?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z) で参照されました。 C:パス:リンク先lib名.lib(リンク先lib名.obj)
このBの方のエラーについて調べてみたのですが、 全く同じ内容として、以下のURLがヒットしました。
http://stackoverflow.com/questions/2896754/link-error-after-update-from-vs2008-to-vs2010
対処方法として、使用する全てのバージョンをVS2010にするか、 VS2008以前でコンパイルし直すか、頑張って当該部分を書き換えるか、と書かれているような感じです…。(誤訳じゃなければ) 今のところ、プロジェクト自体は全てVS2010でコンパイルしているあたり、 リンクしているライブラリをVS2010でコンパイルし直せれば一番良いのですが、 これはちょっと難しそうです。 そのため、コンパイルしているプロジェクト(vcxproj)をVS2008用の物(vcproj)に変えたらうまくいきそうだと思うのですが、 逆に2008に戻す方法をご存知でしたら、教えて頂けませんか?
以上です。
//CLRオプションをつけると可変引数を持つ関数がマネージコード非対応のため、ネイティブコードになるんですね…。 //まだ動いていませんが、それで正常に動作するか不安です。CLR:pureとかの方がいいんですかねぇ…うーむ。
|
|