LTCG(Link-Time Code Generation,链接时代码生成)的 Library 是指在使用 LTCG 优化技术时编译生成的静态库(.lib)或动态库(.dll)。这类库与常规库的主要区别在于它们包含了中间代码(如 LLVM IR 或 MSVC 的 COMDAT 记录),而非直接的目标代码,以便在链接阶段进行全局优化。

辨别方式

打开Developer Command Prompt for VS,通过link -dump -disasm xxx.lib 指令,若是非LTCG的编译的lib,输出类似:

Microsoft (R) COFF/PE Dumper Version 14.00.23026.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file Base.lib

File Type: LIBRARY

  Summary

          BA .debug$S
          14 .idata$2
          14 .idata$3
           4 .idata$4
           4 .idata$5
           A .idata$6

若是LTCG编译的库:

Microsoft (R) COFF/PE Dumper Version 14.00.23026.0
Copyright (C) Microsoft Corporation.  All rights reserved.

Dump of file json_vc71_libmt.lib

File Type: LIBRARY

可能出现的问题 

在构建项目时,若编译器没启动LTCG、链接器未启动CG,则会报如下类似错误:fatal error C1900: “P1”(第“20150812”版)和“P2”(第“20130802”版)之间 Il

解决方式

启动LTCG和CG

 

 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐