Visual Studio -- 遇到的各类报错的解决方案简述

 

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"),是否头文件放置的顺序不对。

 

你可能感兴趣的:(Visual,Studio)