VC++6.0版本号程序转成VS2010版
直接转换的时候遇到两个问题:
1、预编译头文件*.PCH找不到
2、static_cast”: 无法从“void (__thiscall CView2::* )(void)”转换为“LRESULT (__thiscall CWnd::*
1、来源:http://www.zhuyanfeng.com/archives/2231
错误:
fatal error C1083: 无法打开预编译头文件:“Debug\xxx.pch”: No such file or directory
“Rebuild All”没有解决,然后把“C/C++”属性中的“预编译头”由“使用(/Yu)”改为“创建(/Yc)”,问题攻克了。看来还是预编译头文件xxx.pch创建的有问题。细致想一下,vcproject的预编译头是由stdafx.cpp编译生成的。(事实上起作用的是stdafx.h,但头文件不參加编译,所以须要stdafx.cpp文件,这个文件中仅仅有一句代码:#include “Stdafx.h”。)
综上:最妥善的解决方法就是,在project属性中。选择“使用(/Yu)”预编译头,而单独将stdafx.cpp设置为“创建(/Yc)”预编译头。
关于“预编译头”的作用,參考例如以下:
在非常多程序中。每一个源文件都存在一些同样的部分。比方要包括同样的一些头文件,并且这些头文件可能非常长,比如window.h。假设用普通的方法编译这些源文件,对这些头文件在每一个源文件里的出现都要又一次编译,作了非常多反复工作。
假设能将这些头文件专门进行编译。并且把结果存储起来。然后在编译包括这些头文件的源文件时,使用上述结果替代头文件在源文件里的出现。就能够大大降低工作量。Microsoft Visual C++提供的“预编译头文件”机制就支持这一功能。
所谓的预编译头就是把一个project中的那一部分代码,预先编译好放在一个文件中(通常以.pch为扩展名)。这个文件就称为预编译头文件。这些预先编译好的代码能够是不论什么的C/C++代码——–甚至是inline的函数,但必须是稳定的。在project开发的过程中不会被常常改变。
假设这些代码被改动。则须要又一次编译生成预编译头文件。注意生成预编译头文件是非常耗时间的。同一时候得注意预编译头文件通常非常大,通常有6-7M大。
注意及时清理那些没实用的预编译头文件。
或许你会问:如今的编译器都有Time stamp的功能。编译器在编译整个project的时候,它仅仅会编译那些经过改动的文件。而不会去编译那些从上次编译过。到如今没有被改动过的文件。那么为什么还要预编译头文件呢?答案在这里,我们知道编译器是以文件为单位编译的,一个文件经过改动后,会又一次编译整个文件。当然在这个文件中包括的全部头文件中的东西(.eg Macro, Preprocesser )都要又一次处理一遍。VC的预编译头文件保存的正是这部分信息。
以避免每次都要又一次处理这些头文件。
2、来源http://blog.csdn.net/chenyujing1234/article/details/7387712
不能转换void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)2010-05-13 11:35开发平台由VC6.0升级至VS2005。须要将原有的项目迁移,可能碰到类似错误:
error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainFrame::* )(void)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'VS2005对消息的检查更为严格,曾经在VC6下全然正常执行的消息映射在VS2005下编译不通过
ON_MESSAGE(WM_message,OnMyMessage);
OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);假设不符合,则有错误提示:
error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
在匹配目标类型的范围内没有具有该名称的函数
error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
在匹配目标类型的范围内没有具有该名称的函数解决方法例如以下:
首先,把原来的消息函数返回值类型改为LRESULT,函数内能够随便写个return TRUE; 然后消息函数的參数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个參数是否用得到;最后,消息映射如ON_MESSAGE(WM_message,& OnMyMessage)
VC++6.0版本号程序转成VS2010版的更多相关文章
- 如何使用VC++6.0发布程序(即release版本程序)
大家都知道VC编译器默认生成debug版本的程序,但是debug版本程序无法运行在没有安装VC的电脑上, 这就要就我们生成release版本的程序,因为release版本在未安装VC的电脑上也能运行( ...
- [转载]解决win10 VC++6.0 应用程序无法正常运行 0xc0000142
本文转载自http://blog.csdn.net/w_9449/article/details/52864135 转载请申明哦,其实我发现自从我在贴吧发了帖子后,就冒出了不少帖子.经验.当然方法和我 ...
- 解决win10 VC++6.0 应用程序无法正常运行 0xc0000142
废话不多说,无法正常运行原因就是win10不兼容中文版的vc,解决方法就是一句话,用英文版的msdev.exe替换中文版的msdev.exe,msdev.exe是vc的启动程序.直接上来教你怎么做.废 ...
- 完美解决VC++6.0与Visio/office不兼容问题!!!
话说电脑上如果装有VC++6.0编程软件和Visio或office办公软件,那么经常编程的人就会遇到下面的问题:VC打不开文件和工程,总是提示读取内存错误,点“确定”后vc自动关闭,但vc却能新建文件 ...
- VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异
VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异 一直用VC++6.0,对VS2005不太了解,下面简单的熟悉一下VS2005的一下功能,总结一下VS2005在编写MFC时候的应用. ...
- 解决关于VC++ 6.0打开文件时,程序停止的问题
不少boys和girls安装VC++ 6.0英文版后,开始学习C++语言,但是使用软件的过程中,点击“打开”时,就会出现程序进程错误,崩溃的事儿,很是郁闷.最后直接一个对话框如下: 并且vc6.0直接 ...
- ACE的构建(VC++6.0环境)
ACE的构建(VC++6.0环境)Windows下ACE的构建1. 将ACE-5.5.zip解压到所需的安装目录,此处以E:/为例,解压后形成ACE_wrappers文件夹,因此ACE将会存在于ACE ...
- VC++ TCP网络控制台程序
在Windows7系统下,采用工具为VS2008,Win32控制台应用程序,编写一个基于TCP的Client/Server网络程序. 1.服务器端代码 #include <WinSock2.h& ...
- VC++6.0编译环境介绍
大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在"使用"它,而不会想去"了解"它.因为它只是一个工具,我 ...
随机推荐
- C语言,realloc
void * realloc ( void * ptr, size_t new_size ); 关于realloc的行为方式,结合源码总结为:1. realloc失败的时候,返回NULL: 2. re ...
- Eclipse用法和技巧四:生成说明文档1
写代码经常要添加注释的,java代码的注释也可以分为两种.单行注释以“//”作为开头就可以.段落注释在第一行开头添加“/*”,在最后一行结尾添加“*/"即可.这里介绍一种添加注释的方法,其注 ...
- VxWorks6.6 pcPentium BSP 使用说明(二):创建启动盘
本篇介绍从Solaris.Linux.Windows或VxWorks创建VxWorks启动盘的方法. 从Solaris或Linux创建启动盘 使用Solaris或Linux自带的工具/usr/bin/ ...
- 【Ubuntu】升到14,攻克了进入用户后没有菜单条导航栏的问题
控制台还能够进,用ctrl+alt+f1用老账号登录,用sudo adduser test新建立一个名字叫test的帐号 然后就能够进去了,可能是配置文件坏掉了
- Effective C++_笔记_条款05_了解C++默认编写并调用哪些函数
(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 直接上代码: 1: class Empty{}; 如果你写了这样 ...
- boost:asio编译
参考:http://hi.baidu.com/need_for_dream/blog/item/c14a28086a504c33e92488b5.html 环境: VS2010, boost1.38. ...
- 【ASP.NET Web API教程】5.3 发送HTML表单数据:文件上传与多部分MIME
原文:[ASP.NET Web API教程]5.3 发送HTML表单数据:文件上传与多部分MIME 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面 ...
- Activity组件的生命周期
一.Activiy组件的三个状态: 1.前台状态(active) : 在屏幕的最上层,页面获得焦点,可以响应用户的操作2.可视状态(paused) : 不能与用户交互,但是还存在于可视区域内,它依然存 ...
- js错误 SyntaxError: missing : after property id
在用jquery的post方法时 $.post('adminCheckTpmisPlans.do',{'test',str},function(f){ ... }) 报如下错误 SyntaxError ...
- 进一步解 apt-get 的几个命令
用 apt-get 也非常久了,没多想它的实现,近期遇到 gstreamer 装不上的问题.才多看看了它 apt-get 就是从网上下载包,并安装到本地 手工下载 dpkg 包,而后 "dp ...