静态CRT链接

时间:2017-11-20 19:24:07

标签: c++ static-libraries static-linking msvcrt crt

我正在尝试构建我的项目,我想静态链接Windows CRT,但我发现尝试链接它时出现了一些错误,

我已在链接列表中包含以下内容:

  • LIBCMT.LIB
  • LIBCPMT.LIB
  • libucrt.lib
  • libvcruntime.lib

但我收到这些链接错误,说这些符号丢失了:

  • __ imp_copysignf
  • __ imp__aligned_free
  • __ imp__aligned_malloc
  • __ imp_modf
  • __ imp_modff

我已经添加了libucrt(必须是malloc函数,但仍然会出错),我错过了哪些lib?

编辑:我正在使用针对Windows 10 ver.10.0.16299.0的Visual Studio 2017 15.4.4

1 个答案:

答案 0 :(得分:1)

仔细检查您是否也设置了/MT compiler flag。如果未设置,则可能默认为动态链接设置。在这种情况下,缺少_MT预处理程序定义,这会导致编译器使用对动态运行时函数的调用。您可以看到通常为comes from DLL import libraries__imp__前缀。