0

我在 Microsoft Visual Studio Professionalnal 2010 下有一个 c++ qt5 项目。我必须在我的项目中包含一个库 .lib,它是用 Microsoft Visual 2005 编译的,并且依赖于 STL 的 Visual 2005 版本。结果,当我尝试编译我的项目时,我得到了以下链接错误(这里是前三个错误):

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)

我的同事解决了这个问题,将库封装到微软托管的 C++ 库中……但我还没有尝试过,因为我对在我的项目中添加 .NET 依赖项并不感到兴奋。还有其他解决方案吗?当然,我不能用 Visual 2010 重新编译库,也不能更改我的视觉版本。

我正在考虑制作一个可视化的 2005 标准库 .lib ......但我不知道是否有办法做到这一点?

提前致谢

4

1 回答 1

1

您要么需要 [a] 使用 Visual C++ 2010 重新编译库,要么 [b] 将库封装在其自己的模块 (DLL) 中并在其上提供平面 C 接口。

在单个模块中,您不能混合使用不同主要版本的 Visual C++ 库构建的对象。

于 2013-07-06T20:27:23.643 回答