1

vs2010 に組み込まれたライブラリの主な機能を vs2005 プロジェクトからアクセスできるようにする方法はありますか? 私が直面している問題は、clang フロントエンド ライブラリを使用して C コードを解析する必要がある vs 2005 のプロジェクトがあることです。clang ライブラリをコンパイルするには vs 2010 が必要です。

私の問題に光を当てていただければ幸いです。

ありがとう、サケス

編集:

コンパイル時に次のリンカ エラーが表示されます

1>hello.lib(hello.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __int64 __thiscall std::ios_base::width(_int64)" (_imp_?width@ios_base@std@@QAE_J_J@Z) referenced in function "class std::basic_ostream > & __cdecl std::operator<< >(class std::basic_ostream > &,char const *)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z) 1>hello.lib(hello.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __int64 __thiscall std::basic_streambuf >::sputn(char const *,_int64)" (_imp_?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z) referenced in function "class std::basic_ostream > & __cdecl std::operator<< >(class std::basic_ostream > &,char const *)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z) 1>hello.lib(hello.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __int64 __thiscall std::ios_base::width(void)const " (_imp?width@ios_base@std@@QBE_JXZ) referenced in function "class std::basic_ostream > & __cdecl std::operator<< >(class std::basic_ostream > &,char const *)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z) 1>C:\Users\sakethk\Perforce\sakethk_SAKETHK_7702\source\qcom\qct\modem\uim\tools\sakethk\hello05\Debug\hello05.exe : fatal error LNK1120: 3 unresolved externals

4

2 に答える 2

2

いいえ。1 つのモジュール内で、異なるメジャー バージョンの CRT に対してコンパイルされたオブジェクトを混在させることはできません。これにより、通常、異なるメジャー バージョンのコンパイラを使用してコンパイルされたオブジェクトの混在が防止されます。

正しい方法は、Visual C++ 2010 の使用を DLL 内にカプセル化し、Visual C++ 2005 でコンパイルされた実行可能ファイルからその DLL をロードすることです。または、Visual C++ 2010 を使用するようにソースをアップグレードします。Visual C++ 2005 は古くからあります。

于 2013-07-29T19:58:54.890 に答える
0

ここでは、ライブラリ関数は最低レベルにある必要があります。つまり、C スタイルのパラメーターを関数に使用extern "C"し、コンパイラのマングリングを回避するために使用する必要があります。ここでは、すべてのコンパイラと互換性のある優れたライブラリを作成する方法に関する優れた記事を見つけることができます。http://chadaustin.me/cppinterface.html

于 2013-07-29T20:15:37.083 に答える