Visual Studio中出现
Warning LNK4075: 忽略“/INCREMENTAL”(由于“/LTCG”规范)
LINK : 已指定 /LTCG,但不需要生成代码;从链接命令行中移除 /LTCG 以提高链接器性
【解决方案】
【Debug模式下】
在 “项目” -> “属性” ->“配置属性”-> “常规" -> "全程序优化" 中选择“无全程序优化”。
在 “项目” -> “属性” -> “配置属性" -> "C/C++" -> “优化” 中关闭“全程序优化”,选择“否”。
当多个项目共用一个解决方案时,注意每个项目都要操作。
【Release模式下】
在 “项目” -> “属性” -> “常规" -> "全程序优化" 中选择选择“使用链接时间代码生成”。
在 “项目” -> “属性” -> “配置属性" -> "C/C++" -> “优化” 中关闭“全程序优化”,选择“是”。
【Debug模式下】“/INCREMENTAL”
【Release模式下】“/INCREMENTAL:NO”
当多个项目共用一个解决方案,明明编译时项目中“xxxx.lib”已经生成成功,其中一个项目想要引用这个xxxx.lib,使用了#pragma comment(lib, "xxxx.lib")却还是报错:“……无法打开xxxx.lib”。
【解决方案】
检查“项目依赖项”和“项目生成顺序”是否有异;
检查“属性” -> “配置管理器” -> 检查“配置”+“平台”+“是否生成”;
检查 “属性” -> “配置属性" -> "常规" -> "输出目录" + "中间目录" 是否有异
右击想要引用这个xxxx.lib的项目,在 “属性” -> “配置属性" -> "链接器" -> "常规" -> "附加库目录" -> 添加LIB文件所在位置。
例如:$(SolutionDir)$(Platform)\$(Configuration)\
“项目” -> “属性” -> “配置属性" -> "C/C++" -> “代码生成” -> “运行库” -> 【Release模式选多线程DLL,Debug模式选多线程调试DLL】
XXXXProcess.cpp(7): warning C4273: “xxxx”: dll 链接不一致
xxxx.h(37) : 参见“public:xxx m_bIsSingleThread”的前一个定义
xxx.cpp(7): error C2491: “xxxx::m_bIsSingleThread”: 不允许 dllimport 静态数据成员 的定义
【解决方案】
#ifdef XXXXXAPP_EXPORTS
#define XXXXXXAPP_API __declspec(dllexport)
#else
#define XXXXXXAPP_API __declspec(dllimport)
#endif
“项目” -> “属性” -> “配置属性" -> "C/C++" -> “预处理器” -> “预处理器定义”中缺少XXXXXAPP_EXPORTS或者有误。
f:\test\xxxx\MetaData.h(77): error C2039: “vector”: 不是“std”的成员
f:\test\xxxx\MetaData.h(77): error C2143: 语法错误 : 缺少“;”(在“<”的前面)
f:\test\xxxx\MetaData.h(77): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
f:\test\xxxx\MetaData.h(77): error C2238: 意外的标记位于“;”之前
f:\test\xxxx\MetaData.h(82): error C2065: “clsChannelInfoVec”: 未声明的标识符
f:\test\xxxx\MetaData.h(82): error C2228: “.clear”的左边必须有类/结构/联合
类型是“'unknown-type'”
明明代码没有问题,但是就是无法编译成功
【解决方案】
仔细检查该报错文件在被其它类引用头文件时的顺序是否有异(#include "MetaData.h"),是否头文件放置的顺序不对。