1.文件编码错误,utf-8未签名与签名的区别导致的错误
warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
修改方式,通过错误定位到该文件,依次点file->save ***.cpp as->弹出窗口点save右侧小箭头->save with Encoding->替换选是->encoding框选utf-8 with signature
2.g13微软,冲突问题
1>v3_lane_convertor.cpp(351,24): error C2589: '(': illegal token on right side of '::'
1>v3_lane_convertor.cpp(351,24): error C2062: type 'unknown-type' unexpected
1>v3_lane_convertor.cpp(351,24): error C2059: syntax error: ')'
修改方式:std::min(curves.size(), i + nCurVecSize);
换成std::min<size_t>(curves.size(), i + nCurVecSize);
3.c++标准问题
Record record = {data.name_, 7, {.str_ = str_ptr}};
在Windows上只有20可以编过,其他标准不行
修改方式:右键项目属性->c+±>language->c++ language standard 选c++20->conformance mode 选 NO(/permissive)(严格执行c++对应标准)
4.hash.h涉及到的问题,
1.__cplusplus始终为199711L,修改对应项目command,两个步骤
修改方式:右键项目属性->c+±>command line -> addtional options 添加宏/Zc:__cplusplus
右键项目属性->c+±>language->c++ language standard 选c++17->conformance mode 选 NO(/permissive)(严格执行c++对应标准)
2.GOOGLE_PROTOBUF_HASH_COMPARE std::hash_compare,老是使用这个过期的hash_compare
修改方式:添加宏__GLIBCXX__=20171201 _STLPORT_VERSION
5.glog中的宏ERROR重定义问题
glog/log_severity.h(57,1): fatal error C1189: #error: ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h.
在引用#include <glog/logging.h>
前加上两个定义#define GOOGLE_GLOG_DLL_DECL #define GLOG_NO_ABBREVIATED_SEVERITIES
同时修改自己代码中定义的的ERROR为MYERROR。
6.g13微软,冲突问题
error C2059: 语法错误:“<class-head>”
error C2143: 语法错误: 缺少“;”(在“{”的前面)
error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
又是宏定义冲突,项目里的namespace interface与微软宏定义冲突,没的搞,改名字
7.数组初始化问题
size_t argc = sizeof...(param);
napi_value argv[argc];
if (napi_get_cb_info(env, args, &argc, argv, nullptr, nullptr)
error C2131: 表达式的计算结果不是常数
message : 因读取超过生命周期的变量而失败
message : 请参见“a”的用法
修改方式:
size_t argc = sizeof...(param);
std::vector<napi_value> argv(argc);
if (napi_get_cb_info(env, args, &argc, argv.data(), nullptr, nullptr)
8.运行库与目的库类型不一致,一个是debug,一个是release
libprotobufd.lib(int128.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”
解决方式:
c++->代码生成code generation->运行库runtime library选择Multi-threaded Debug DLL (/MDd)
9.将动态库的库导入文件当做静态库使用,引导文件只有链接符号,没有函数内容
编译golg库为debug
diagnostic.lib(hor_diagnoser.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport)
10.std::byte与旧标准命名冲突
error C2872: “byte”: 不明确的符号
message : 可能是“unsigned char byte”
message : 或 “std::byte”
解决方法:添加宏add_definitions(-D_HAS_STD_BYTE=0)
11.error LNK2019: 无法解析的外部符号 "public: static struct napi_threadsafe_function__
解决方法:就是对应cc文件没放对地方。。。
12.error LNK2019: 明明头文件,实现文件都有,但还是链接错误,而且路径也对,测试下来同一个类的两个函数一个可以链接,一个链接错误,太奇怪了。
解决方法:头文件顺序有错误,把头文件依赖的类或者结构体的头文件放到头文件前
// #include "ehp_route_manager.h"
// #include "ehp_configor.h"
#include "ehp_configor.h"
#include "ehp_route_manager.h"
13.ws2def.h与winsock.h命名冲突
解决方法:先引用ws2def.h,在引用windows.h
#ifdef WINDOWS
#define GOOGLE_GLOG_DLL_DECL
#define GLOG_NO_ABBREVIATED_SEVERITIES
#include <winsock2.h>
#include <Windows.h>
#endif