在Visual Studio 2013中编译静态库

时间:2015-05-07 19:26:59

标签: c++ visual-studio-2010 visual-studio-2013

我正在使用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开关是否正确?

1 个答案:

答案 0 :(得分:2)

静态库通常只与构建它们的工具集兼容。对于标准C ++库/ STL的任何使用尤其如此,这就是为什么较新版本的VS嵌入了_MSC_VER标记以便使用STL标头,如果您尝试混合会产生链接时错误的原因它们。

使用与使用它们的项目相同的CRT设置(/ MT,/ MD,/ MTd,/ MDd)构建静态库也很重要。

使用CRT DLL使用C或COM导出的DLL实际上是唯一的“稳定”版本。可以安全地与不同版本的编译器混合的库。

否则,您应该为要支持的每个版本获取工具集,并构建.lib所需的所有风格。