赞
踩
把一个C++工程,从vs2015工程向vs2019工程迁移的过程中,碰到了好多问题,记录如下:
1. ConfigINI.cpp(85,55): error C2664: “std::string &trim(std::string &)”: 无法将参数 1
从“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”转换为“std::string &”
ConfigINI.cpp(85,45): message : 非常量引用只能绑定到左值
ConfigINI.cpp(24,9): message : 参见“trim”的声明
解决办法是增加一个强制类型转换:entry.name = trim((string&)str.substr(0,fIndex));
2. 还有一些过期的func要使用,编译选项中增加:/D _CRT_SECURE_NO_WARNINGS。
3. error C3861: “access”: 找不到标识符。access函数在windows中是_access()
替换一下就好。
4. 下面这种打印的表达方式也不被允许了:
#if 1
#define VosPrint(fmt,args...) do{ \
char _PrtBuf[1000]; \
sprintf(_PrtBuf,":" fmt , ## args); \
Log_MsgLine("vos.log",_PrtBuf); \
}while(0)
#else
#define VosPrint(fmt,args...)
#endif
重新找一个logger模块,新建过滤器,包括logger子模块源代码进来。
5. 此外sprintf要改为snprintf。strcpy要改为strcpy_s。
改动还是比较多,感觉就是ISO的c++ 14标准变得更严格了,这也是好事,避免可能的出错。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。