在VS2015中使用C++静态库时遇到的问题

最近升级了VS2015 Update1。准确地说,是卸载了VS2015然后重装了VS2015 Update1。我发现我试图“升级”VS从来没有成功过,每次都不得不先卸载再安装。真是无力吐槽。另外给准备安装或者升级VS的朋友提点建议:首先关掉各种杀毒软件和安全工具,然后用管理员权限启动安装程序。

 

在VS 2015中,如果使用第三方提供的静态库(.lib),可能会遇到链接错误:

 

错误LNK2019无法解析的外部符号 __imp__vsnprintf_s,该符号在函数 "public: static class ... 中被引用SampleSample\mdd.lib(UtString.obj)

 

错误LNK2001无法解析的外部符号 __imp__vsnprintf_sSimple...\MSVCRTD.lib(vsnprintf_s.obj)

 

错误LNK2001无法解析的外部符号 __imp____iob_funcSample...\mdd.lib(UtDebug.obj)

 
遇到这种问题,不要总以为是你自己的库没有正确引入。事实上这个问题对于使用之前版本VS编译的静态库来说恐怕会很常见。
 
MS给的解释在这里:

Breaking Changes in Visual C++ 2015

解决方法:
参照 https://jingyan.baidu.com/article/48206aeab8516f216ad6b38c.html ,为项目引入legacy_stdio_definitions.lib这个静态库。

 

 

添加评论

Loading