0

Microsoft Visual Studio Professional 2010 の下に c++ qt5 プロジェクトがあります。Microsoft Visual 2005 でコンパイルされ、STL のビジュアル 2005 バージョンに依存するライブラリ .lib をプロジェクトに含める必要があります。その結果、プロジェクトをコンパイルしようとすると、次のリンク エラーが発生しました (最初の 3 つのエラーを次に示します)。

libmegamatching.lib(BImage.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,int)" (__imp_?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z)
libmegamatching.lib(makeCanonicalImage.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,int)" (__imp_?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z)
M_Control.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,int)" (__imp_?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z)

私の同僚は、ライブラリを Microsoft 管理の C++ ライブラリにカプセル化することでこの問題を解決しましたが、プロジェクトに .NET 依存関係を追加することに興奮していないため、私はまだ試していません。他の解決策はありますか?もちろん、ビジュアル 2010 でライブラリを再コンパイルすることも、ビジュアル バージョンを変更することもできません。

ビジュアル 2005 std ライブラリ .lib を作成することを考えていましたが、それを行う方法があるかどうかわかりません。

前もって感謝します

4

1 に答える 1

1

[a] Visual C++ 2010 を使用してライブラリを再コンパイルするか、[b] ライブラリを独自のモジュール (DLL) 内にカプセル化し、フラットな C インターフェイスを提供する必要があります。

1 つのモジュール内で、異なるメジャー バージョンの Visual C++ ライブラリでビルドされたオブジェクトを混在させることはできません。

于 2013-07-06T20:27:23.643 に答える