【问题标题】:Compile static library in Visual Studio 2013在 Visual Studio 2013 中编译静态库
【发布时间】:2015-05-07 19:26:58
【问题描述】:

我正在使用 Visual Studio 2013 开发 c++ 静态库 *.lib。我收到了使用 Visual Studio 2010 编译器编译库的请求,但是我没有在开发人员机器上安装它。

在编译动态库 *.dll 时,可以使用开关 /MT 将 C 运行时打包到 dll 中。动态库因此变得更大。但是,当我使用 /MT 开关时,静态库会变小(5MB -> 4.9MB),这与我的预期相反。

问题: 1. 我可以在Visual Studio 2013 中建立静态库,以便以后Visual Studio 2010 编译器使用它吗? 2. /MT 开关是否正确?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 2014-05-24
      相关资源
      最近更新 更多