1. 主页 > vs安装问题 > VS2010安装问题 >

Vs2010项目转Vs2017问题总结

前言:

由于最新项目中要应用语音识别的功能,考虑到调用百度语音的接口。但是百度语音接口要求使用C++11的规范,而我们当前项目是在Vs2010的基础上开发的。众所周知,Vs2010对C++11的支持是很有限的,所以就花费了点时间把项目移植到Vs2017上。期间也遇到了不少问题,记录下,可能不太详尽,勿怪。

1、Vs2017打开Vs2010的工程,会提示工具集升级,确定即可。大部分程序都是可以直接移植的,如有问题请继续。

2、重写虚函数限制性规范比基类少

虚函数已被重写,但在/Za,则重写函数具有限制性较少异常规范

// C2694.cpp  
// compile with: /Za /c  
class MyBase {  
public:  
   virtual void f(void) throw(int) {  
   }  
};  
  
class Derived : public MyBase {  
public:  
   void f(void) throw(...) {}   // C2694  
   void f2(void) throw(int) {}   // OK  
};  
3、msvcrt.lib与其他库的使用冲突

项目属性--链接器--输入:/nodefaultlib:msvcrt.lib

其他类似的错误都可以这样添加命令

4、error C2220:警告被视为错误 - 没有生成 “object”文件

项目属性--C++--常规:警告视为错误改为否

5、error C1189:Macro definition of snprintf conflicts with Standard Library function declaration

#define snprintf _snprintf
替换为

#if defined(_MSC_VER) && _MSC_VER<1900
#  define snprintf _snprintf
#endif
6、imp_strncpy无法解析的外部符号

此类错误都是找不到函数入口导致的,确认是否添加对应lib文件或是dll即可

7、项目中如果有内部调用的lib文件,需要在Vs2017下重新编译生成,然后再调用。另外需要注意,对于Vs2010转Vs2017,lib文件也需要从Vs2010升级到Vs2017后编译,而不能是Vs2012升级到Vs2017后编译,否则会出现链接错误。

暂时都这样~





本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2010anzhuangwenti/2020/0727/5798.html

联系我们

在线咨询:点击这里给我发消息

微信号:PREEE8

工作日:9:30-18:30,节假日休息