我在Microsoft visual studio professionnal 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年std库.lib ...但我不知道是否有办法做到这一点?
提前致谢
答案 0 :(得分:1)
你需要[a]使用Visual C ++ 2010重新编译库,或者[b]将库封装在自己的模块(DLL)中,并在其上提供一个扁平的C接口。
在单个模块中,您不能混合使用不同主要版本的Visual C ++库构建的对象。