Visual Studio 2015: v120 vs v140?
Visual Studio 2015: v120 vs v140?
FYI:Win10,x64
我今天开始试用Visual Studio 2015,在弄清楚如何运行C/C++部件后,我尝试加载一个使用非官方glsdk的大型个人项目。我尝试构建,但得到了链接器错误。它抱怨freeglutD.lib、glloadD.lib和glutil.lib中引用了未解析的外部符号。它还抱怨我自己的文件中_MSC_VER不匹配。
我在网上做了一些研究,搞砸了2013和编译器版本(项目属性->通用->平台工具集)-2013年的v120和2015年的v140-并且能够用v140重建glsdk(由于缺少文件,不包括glmesh)。然后它运行良好。
问题:为什么会这样?我认为由标准兼容编译器创建的静态lib文件可以与其他版本的标准兼容编译器一起使用(在本例中,v120上的C/C++和v140上的C/CC++)。但显然v140不会和以前的编译器制作的库一起玩。
如果这只是VS构建例程的黑暗地带,那么我可以放弃这个问题,但我也想知道为什么它们不能一起工作。
从历史上看,Visual C++破坏了每个主要版本的运行时库之间的二进制兼容性。这为改进实现提供了一些自由,而不受以前版本的ABI的约束。
然而,从Visual C++2015开始,他们重新构建了运行时库,使其能够向前提供兼容性,但这并不能解决向后的问题。
看看这篇博客文章和他们发布的关于";通用CRT"
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Confusion: decltype vs std::function
- 将IBM Rhapsody模型集成到VS 2019中
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 修改 VS Code 中的默认C++代码段
- 如何使用c++在VS 2019上运行SQL查询
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- 完美前进使用 std::forward vs RefRefCast
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- consteval wrapper vs. source_location
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- Visual Studio 2015: v120 vs v140?