【问题标题】:visual studio 2013 options视觉工作室 2013 选项
【发布时间】:2014-12-23 02:52:36
【问题描述】:

如果 .lib 文件用于静态链接而 .dll 文件用于动态链接,为什么我可以在 C/C++ 中指定 -> 代码生成 -> 运行时库选项在构建显式静态库时选择多线程或多线程 DLL(即当制作 .lib)还是在构建项目并链接到 .lib 库时?

【问题讨论】:

  • 此设置适用于独立于您正在生成的目标的运行时。我的意思是你可以创建一个带有动态 CRT 的静态 .lib 或一个带有静态 CRT 和其他几种组合的 dll ..
  • CRT 到底是什么,我什么时候想将其设为静态或动态?我想静态链接我的库,是否可以保证它是 .lib 文件?运行时设置必须在所有库中匹配,对吗?

标签: c++ visual-studio linker static-libraries


【解决方案1】:

Visual Studio 允许您指定CRT 将如何集成到C/C++->Code Generation->Runtime Library 下的项目中。此项目设置控制如何将显式或内部使用的 C/C++ 例程(例如异常函数或 STL 例程)链接到您的项目。

您可以通过在编译期间指定/MT/MD 标志来创建动态或静态使用CRT 的静态库。

关于优点/缺点,我链接了this answer,其中包含了一个很好的要点列表。

最后要注意的一点:如果您的项目将使用多个静态库(包括您的 .lib 文件),您应该确保此 CRT 选项在链接阶段匹配,否则您可能会遇到the (in)famous LNK4098 error

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多