vs2015工程向vs2019工程迁移碰到的各种问题

把一个C++工程,从vs2015工程向vs2019工程迁移的过程中,碰到了好多问题,记录如下:


1.   ConfigINI.cpp(85,55): error C2664: “std::string &trim(std::string &)”: 无法将参数 1 
    从“std::basic_string,std::allocator>”转换为“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标准变得更严格了,这也是好事,避免可能的出错。
 

你可能感兴趣的:(#,前端开发)