因为适应平台的需要,需将之前的vc6程序升级到vs2010的平台,升级的过程,各种不顺利,现特整理了部分容易遇到的问题,分享给小伙伴,少走弯路!
1. 将头文件中#include <iostream.h>改为#include <iostream>;
2. 将头文件中#include <fstream.h>改为
#include <fstream>
Using namespace std;
3. error C2039: “nocreate”: 不是“std::basic_ios<_Elem,_Traits>”的成员
改nocreate为_Nocreate;
4. pow(x,y)函数定义,x不能为int型,因此要进行转换,比如pow(2,3)必须写成pow(2.0,3)或pow( ((float)2,3);
5. 参数1不能从“const char[20]”转换为“LPCTSTR”类型是什么意思?
如果是windows程序的话,就是设置的问题,项目-属性-常规-字符集-使用多字节字符集。
6. error C2666: “pow” : 7 个重载有相似的转换(错误修改方法)
pow函数有7个重载,编译器不知道该用哪一个(因为参数类型不明确),在参数中使用常数或表达式时经常遇到这样的问题,可以把常数和表达式的值先保存到变量中,然后再调用函数,或者在函数的参数中加上强制类型转换。两个参数的类型明确并符合其中的一个就可以了。
7. “VC 2010 项目过大” 问题解决方案
使用VC2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大。
方案一:Tools->Options->Text Editor->C/C++->Advanced->Disable Database,设置为True,即禁用数据库,这种方法实行后,还真是产生了些问题,比如,无法自动加载代码。为此,就没有使用此方法。
方案二:Tools->Options->Text Editor->C/C++->Advanced,在 Fallback Location 的属性组中,将"Always Use Fallback Location"设置为 true,将"Do Not Warn If Fallback Location Used" 设置为 true ,然后删除解决方案目录下的 sdf 文件和 ipch 目录,再次打开解决方案,发现这些烦人的东西已经不见了。中文版得为,在高级里,“退回位置”两个选项都变为True。
这样一来,几百兆的项目,用清理工具一清理,也能变成几百K了。
那么那些文件放置到那里了呢?看 "Fallback Location" 属性说明:这是存储浏览信息数据库和 IntelliSense 文件的第二个位置,如果不指定则放置到临时目录中;到临时目录一看,里面有一个 VC++ 的目录,都在那个目录里面呢。
可以在 "Fallback Location" 属性中,设置一个固定的路径来存储这些文件,比如D:\VS2010Temp,这样也比较好管理这些庞大的臃肿的文件,可以定期清理掉它们,释放出硬盘空间!
8. 程序中