在visualc2010项目中包含一个visual2005库

Including a visual 2005 library in a visual C 2010 project

本文关键字:visual2005 包含一 visualc2010 项目      更新时间:2023-10-16

我在Microsoft visual studio professional 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依赖项不感兴趣。还有其他解决方案吗?当然,我不能用visual2010重新编译库,也不能更改我的可视化版本。

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

提前感谢

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

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