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)

时间: 2024-10-22 21:12:43

VC++6.0版本号程序转成VS2010版的相关文章

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 fi

解决win10 VC++6.0 应用程序无法正常运行 0xc0000142

废话不多说,无法正常运行原因就是win10不兼容中文版的vc,解决方法就是一句话,用英文版的msdev.exe替换中文版的msdev.exe,msdev.exe是vc的启动程序.直接上来教你怎么做.废话全写在这帖子里了http://tieba.baidu.com/p/4800053770 下载好我分享的英文版msdev.exe(http://pan.baidu.com/s/1qYElbDq)解压出来,然后找你的vc的安装目录.如果你没有安装时没有更改安装路径,那就默认在C盘 C:\Program

一步步教你从VC 6.0 转到 Visual Studio 编写C程序

之前一直习惯用VC 6.0编写C程序,但是换到win8或者win10后,VC的各种不兼容,各种闪退实在让人无语.所以转到Visual Studio进行C编程,用过之后发现效果非常好.本文专门为哪些刚接触VS的人员写点自己的心得,同时对初次接触VS可能遇到的问题进行简要分析. 1.怎样用VS配置C工程 对于VS的安装,网上很多安装包,可以根据需要安装.我安装的是VS2010,建议安装VS2013及后序版本.这里不在介绍安装过程,主要以图片形式说明怎么建立C工程: 2.关于自动补全 可以使用快捷键

VC++6.0程序安装

首先分享一个中文绿色版VC++6.0软件安装程序 链接:http://pan.baidu.com/s/1pK6Q4pd 密码:w58o 安装过程: 1.双击安装程序,一直点击下一步. 2.这里可以用推荐位置,也可以自己选择位置,自己选择安装位置时尽量不要用带有汉字的位置. 3.然后一直点击下一步 4.点击安装. 5.点击完成.

VS2010打开VC++6.0创建的项目

本来想着这么点事儿,自己搞懂了就OK了,可又想到也许写出来能帮到一些人. 事情是这样的, 老师刚给了一个项目,demo是VC++6.0做的,我用VS2010打开后报错 如图所示 尝试了网上的方式,都不行.方案无非就是更改如下两个位置(红线圈出) 最后意外搞定 把 bin 目录下的文件全部复制过来 虽然有点扯,不过,能够运行了

解决关于VC++ 6.0打开文件时,程序停止的问题

不少boys和girls安装VC++ 6.0英文版后,开始学习C++语言,但是使用软件的过程中,点击“打开”时,就会出现程序进程错误,崩溃的事儿,很是郁闷.最后直接一个对话框如下: 并且vc6.0直接死掉,无论重装零碎还是重装vc6都无济于事.这是vc6的一个bug ,微软给出了解决的办法 以下就是解决办法: 1.先到以下网址:vc60ent/s1/ 6.0/w9xnt4/en-us/filetool.exe下载一个FileTool.exe的文件, (1)双击文件,点击"Unzip"

ACE的构建(VC++6.0环境)

ACE的构建(VC++6.0环境)Windows下ACE的构建1. 将ACE-5.5.zip解压到所需的安装目录,此处以E:/为例,解压后形成ACE_wrappers文件夹,因此ACE将会存在于ACE_wrappers/ace目录中.ACE_ROOT=E:/ACE_wrappers.2. 在系统中新建ACE_ROOT环境变量,值设为 E:/ACE_wrappers.具体设置为:我的电脑->属性->高级->环境变量->新建3. 在E:/ACE_wrappers/ace目录中创建一个头

VC++6.0之标准using namespace std

最近一直在看由电子工业大学出版的吕老师编写的c<++语言程序设计(第三版)>,其中的程序代码书写我并不知道有一定的缺陷,我一直沉浸在他的书中,竟然没有再去看看其他的版本,原来新的C++已经明确提出不提倡用的一些规定这本书还在用,也是我在最近的做题陷入了一定的困境,很郁闷,后来在标准的习题中了解了一些编程代码书写规范.今天就好好学习一下标准的代码书写. 先来看看旧版的C++编程风格(就是目前我学的这本书) <font size="4"><span style

VC++ TCP网络控制台程序

在Windows7系统下,采用工具为VS2008,Win32控制台应用程序,编写一个基于TCP的Client/Server网络程序. 1.服务器端代码 #include <WinSock2.h> #include <stdio.h> //VS2012创建的MFC Win32控制台应用程序中,此处默认包含的是#include "stdafx.h",其中stdio.h头文件已经被包含进stdafx.h中了,不再需要重复包含 #define SERVERPORT 60