我正在使用Visual Studio 2013开发c ++静态库* .lib。我收到了使用Visual Studio 2010编译器编译库的请求,但是我没有在开发人员计算机上安装它。
编译动态库* .dll时,可以使用将C运行时打包到dll中的switch / MT。因此动态库变得更大。但是,当我使用/ MT开关时,静态库变小(5MB - > 4.9MB),这与我的预期相反。
问题: 1.我可以在Visual Studio 2013中构建静态库,以便Visual Studio 2010编译器以后可以使用它吗? 2. / MT开关是否正确?
答案 0 :(得分:2)
静态库通常只与构建它们的工具集兼容。对于标准C ++库/ STL的任何使用尤其如此,这就是为什么较新版本的VS嵌入了_MSC_VER
标记以便使用STL标头,如果您尝试混合会产生链接时错误的原因它们。
使用与使用它们的项目相同的CRT设置(/ MT,/ MD,/ MTd,/ MDd)构建静态库也很重要。
使用CRT DLL使用C或COM导出的DLL实际上是唯一的“稳定”版本。可以安全地与不同版本的编译器混合的库。
否则,您应该为要支持的每个版本获取工具集,并构建.lib所需的所有风格。