VC6编译与调试.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("Hello World!\n");
CCell * pCell = new CCell(); //创建 CCell 类的一个对象 pCell->SetValue( 'A' ); //调用 SetValue 方法设置单元格的值 char c = pCell->GetValue(); //调用 GetValue 方法获取单元格的值 return 0; } 为了编译通过,还需在 main 函数所在 CPP 文件的前面加上以下一行#include 语句。 #include "Cell.h" //因为使用了 CCell 类,因此需包含 CCell 类的头文件 Cell.h。
1.1.1.2.5. 添加和使用类
一个相对独立的功能,可使用一个类来封装和实现,这使项目代码结构清晰的同时,也使相 关功能代码重用更加方便。
1.1.1.2.5.1. 添加一个类
使用 VC++向项目中添加一个类,可按如下步骤进行。以下假定添加一个单元格类 CCell, 一个 char 类型的成员变量 m_cValue 表示单元格的值;有一个 GetValue 函数用于获取单元格 的值;一个 SetValue 函数用于设置单元格的值。 依次单击菜单项<Insert>=><New Class >,打开添加类窗口。
Win32 Static Library
开发基于 Windows API 的静态链接库(LIB)
小提示 1、Console(控制台)和 Win32 是 Windows 操作系统中的两个子系统。Console 子系统用于兼 容执行早期 DOS 程序;Win32 子系统用于可移植的可执行文件格式(PE)的执行 32 位程序。 Windows 操作系统中的绝大多数窗口程序包括 MFC 窗口程序都是在 Win32 子系统下执行。 2、项目类型表中的 Win32 Application 和 MFC AppWizard 区分开来,是强调各自基于的图形 界面开发框架不同。Win32 Application 强调可直接使用 Windows API 开发,避免引入复杂庞 大的 MFC 框架,而 MFC AppWizard 强调可使用 MFC 框架开发,快速构建稳固的窗口程序。
void CCell::SetValue(char c) {
m_cValue = c; }
实现 GetValue 和 SetValue 函数
1.1.1.2.5.4. 类的使用
在 main 函数中创建一个 CCell 对象,将单元格的值设置为'A',然后获取单元格的值, 观察其是否为'A'。
在 main 函数中编写如下代码: int main(int argc, char* argv[]) {
return 0; }
添加#include 语句之后,重新编译整个项目,发现编译成功。至此,102 个编译错误全部解 决;实际上只修改了第 1 个编译错误。这一实例充分说明了优先解决第 1 个编译错误的重要 性。有时编译结果指出了成千上万个编译错误,按照优先解决第 1 个错误的做法,解决了第 1 个错误之后,再编译时很可能只有几百个错误,再次修改新的第 1 个错误,再次编译时很 可能只剩下几十个错误,反复如此,直到编译成功。
自动生成的文件 2、文件视图 刚创建的控制台项目,文件视图中只有两个 CPP 文件,一个是 main 函数所在文件,另一个 StdAfx.cpp 是预编译机制所用的源文件。
文件视图 3、类视图 刚创建的控制台项目,没有任何类,只有一个全局函数 main 函数。
类视图
另外,由于此控制台程序中没有使用任何资源,因此没有资源视图。
编译单个文件
编译过程中如果出现一些莫名其妙的语法之外的错误,建议先使用<Build>菜单下的<Clean> 菜单项清除全部编译结果,再使用<Rebuild>菜单项完全重新编译整个项目。
1.1.1.3.2. 消除编译错误
最好是在编写代码时就时时注意,降低编译出错的概率。如果无法避免编译出错,那么可以 掌握一些消除编译错误的思路,避免在出现编译错误尤其是冒出几千个编译错误时出现手足 无措的尴尬局面。 一般来讲,写代码时遇到很多编译错误属于正常情况,千万不要气馁。正确的做法是重点关 注第 1 条编译错误。在输出窗口找到第 1 条编译错误,双击错误信息,源代码编辑窗口定位 会定位到错误所在行。 在控制台项目 ConsoleHelloWorld 中,如果不写最后的#include 语句,编译结果会指出 102 个编译错误。现在开始把这些编译错误逐一消除。下图中 cpp 文件名后紧跟的括号中的数字 表示在编译该 cpp 文件的第多少行时出错。
DevStudio Add-in Wizard
开发 VC6.0 的扩展功能应用
ISAPI Extension Wizard
开发 IIS Web 服务器扩展功能应用
MFC ActiveX ControlWizard
开发 ActiveX 控件
MFC AppWizard(dll)
开发基于 MFC 的动态链接库(DLL)
添加类的菜单入口 在添加类窗口中指定类的类型为通用类(Generic),类名这里指定为 CCell,单击<OK>按钮, 完成 CCell 类的添加。
添加完类后,类视图如下:
添加类窗口
添加 CCell 类后的类视图 添加完类后,文件视图如下,其中 Cell.h 文件为类的定义文件,Cell.cpp 为类的实现文件。
1.1.1.3. 编译环境介绍 1.1.1.3.1. 编译过程
单击 工具条按钮,在编译窗口查看编译结果。 如下所示,表明编译完全成功,目标 EXE 文件已经成功创建。
编译成功 如下所示,表明存在 102 个编译错误,目标 EXE 文件没有创建。
编译错误 编译小型项目时,编译过程执行得很迅速,可能编译结果立即就出来了。但编译大型项目时, 项目中部分文件长度比较大,或者文件数量比较多,编译过程可能持续进行 30 分钟甚至更 长时间,这时编译过程会变成一个痛苦的等待过程,。如果代码变动所涉及的文件比较单一, 可考虑仅仅单独编译有变动的单个文件,可以大大节省编译时间。
找到第 1 条编译错误 双击错误信息后,源代码窗口定位的错误所在行代码为:
错误所在行的代码 结合错误信息: ConsoleHelloWorld.cpp(10) : error C2065: 'CCell' : undeclared identifier
可以知道,大致是编译器在编译 ConsoleHelloWorld.cpp 文件时,不认识 CCell 这个类,而我 们明明已添加了 CCell 这个类的定义,就在 Cell.h 文件中。需要说明一下的是,VC6.0 在编 译项目的时候,总是一个 CPP 文件一个 CPP 文件的单独编译,最后才将各个编译结果链接 到一块。VC6.0 在编译 ConsoleHelloWorld.cpp 文件时,根本不知道项目中还有 Cell.h 这个文 件存在。#include 指令可以解决这个问题。
目信息确认界面。
选择具体应用类型
控制台项目具体应用类型
具体应用类型
描述
An empty project没有任何代 Nhomakorabea的空项目。
A simple application
包含一个空的 main 函数的简单项目。
A "Hello,world" application
在控制台输出 Hello,World 的简单项目.
小提示 成员变量一般设计为私有类型,并且成员变量名一般加 m_前缀。
1.1.1.2.5.3. 添加成员函数
在类视图中,在 CCell 类处单击鼠标右键,打开弹出菜单。
弹出菜单 在弹出菜单中单击<Add Member Function>菜单项,打开添加成员函数窗口。输入返回值类 型、函数声明,以及访问类型,单击<OK>按钮完成成员函数的添加。下图为添加 GetValue 函数,用于获取单元格的值。
选择项目类型 小提示 项目名称建议以英文字母组合或汉语拼音组合,不推荐使用中文作为项目名称。 选择项目类型之后,可针对具体的项目类型,进行项目具体特征的定制。不同项目类型需要
定制的具体特征各有不同,后续会针对几种常见的项目类型进行具体说明。
1.1.1.2. 控制台项目 ConsoleHelloWorld 1.1.1.2.1. 项目目标
MFC AppWizard(exe)
开发基于 MFC 的应用程序
Win32 Application
开发基于 Windows API 的窗口应用
Win32 Console Application
开发基于 Windows API 的控制台应用
Win32 Dynamic-Link Library
开发基于 Windows API 的动态链接库(DLL)
按照前文所述方法,启动应用程序向导。 2、选择项目类型
按照前文所述方法,选择项目类型为 Win32 Console Application。输入项目名称 为 ConsoleHelloWorld,单击<OK>按钮,进入控制台应用程序向导。
创建 ConsoleHelloWorld 控制台应用项目
3、选择具体应用类型 选择创建一个典型的 Hello,World 应用程序,单击<Finish>按钮,完成项目配置,进入项
添加函数窗口 按照同样的方式,添加 SetValue 函数,用于设置单元格中的值。
添加 SetValue 函数
添加完成员变量和成员函数之后,类视图完整的 CCell 类如下所示:
完整的 CCell 类
实现 GetValue 和 SetValue 函数 char CCell::GetValue() { return m_cValue; }
添加 CCell 类后的文件视图
1.1.1.2.5.2. 添加成员变量
在类视图中,在 CCell 类处单击鼠标右键,打开弹出菜单。
弹出菜单 在弹出菜单中,点击<Add Member Variable>菜单项,打开添加成员变量窗口。下图为添加 m_cValue 成员变量,用于存储单元格的值。
添加成员变量窗口
1.1.1.1. 应用程序向导
VC6.0 可以创建多种类型的应用程序项目。为了方便用户定制应用程序的具体特征,VC6.0 提供了应用程序向导(AppWizard)。
1.1.1.1.1. 常用项目类型
VC6.0 提供的几种常用项目类型有:
常用项目类型表
项目类型
备注
ATL COM AppWizard
开发基于活动模版库(ATL)的 COM 组件
要使用 CCell 类,先必须包含该类的.H 文件。在 main 函数所在的 ConsoleHelloWorld.cpp 文件中,添加如下代码:
#include "Cell.h" 修订编译错误之后的完整代码如下: #include "stdafx.h" #include "Cell.h" //为了使用 CCell 这个类
1.1.1.1.2. 启动应用程序向导
依次选择主菜单中的<File>=><New>菜单项,可启动应用程序向导。启动向导之后可以选择 要创建的项目类型。
启动应用程序向导
1.1.1.1.3. 选择项目类型
选择项目类型是应用程序向导的第 1 步。选择<Projects>标签页,在左侧项目类型列表 中选择合适的项目类型,然后在右侧选择项目路径,输入项目名称,最后单击<OK>按钮, 进入项目具体特征的配置。
int main(int argc, char* argv[]) {
printf("Hello World!\n");
CCell * pCell = new CCell(); //创建对象 pCell->SetValue( 'A' ); //设置单元格的值
char c = pCell->GetValue(); //获取单元格的值
An Application that support s MFC
使用了 MFC 的控制台项目。
4、项目信息确认
在项目信息确认界面,确认所显示的项目信息是否正是希望创建的项目,确认正确之
后,单击<OK>按钮,完成项目创建,结束应用程序向导。
项目信息确认
1.1.1.2.4. 项目结构
项目信息确认之后,应用程序向导自动生成了一些代码。 1、物理目录
实现一个用于管理单元格的控制台程序,先设置单元格的值为字母 A,然后查看单元格的值。
1.1.1.2.2. 什么是控制台应用程序
控制台应用程序具有类似如下黑窗口的用户界面,主要靠键盘输入和控制台输出和用户交 互。
控制台应用程序
1.1.1.2.3. 创建控制台项目
下面以控制台应用程序为例,描述如何使用应用程序向导创建一个控制台应用程序。 1、启动应用程序向导
CCell * pCell = new CCell(); //创建 CCell 类的一个对象 pCell->SetValue( 'A' ); //调用 SetValue 方法设置单元格的值 char c = pCell->GetValue(); //调用 GetValue 方法获取单元格的值 return 0; } 为了编译通过,还需在 main 函数所在 CPP 文件的前面加上以下一行#include 语句。 #include "Cell.h" //因为使用了 CCell 类,因此需包含 CCell 类的头文件 Cell.h。
1.1.1.2.5. 添加和使用类
一个相对独立的功能,可使用一个类来封装和实现,这使项目代码结构清晰的同时,也使相 关功能代码重用更加方便。
1.1.1.2.5.1. 添加一个类
使用 VC++向项目中添加一个类,可按如下步骤进行。以下假定添加一个单元格类 CCell, 一个 char 类型的成员变量 m_cValue 表示单元格的值;有一个 GetValue 函数用于获取单元格 的值;一个 SetValue 函数用于设置单元格的值。 依次单击菜单项<Insert>=><New Class >,打开添加类窗口。
Win32 Static Library
开发基于 Windows API 的静态链接库(LIB)
小提示 1、Console(控制台)和 Win32 是 Windows 操作系统中的两个子系统。Console 子系统用于兼 容执行早期 DOS 程序;Win32 子系统用于可移植的可执行文件格式(PE)的执行 32 位程序。 Windows 操作系统中的绝大多数窗口程序包括 MFC 窗口程序都是在 Win32 子系统下执行。 2、项目类型表中的 Win32 Application 和 MFC AppWizard 区分开来,是强调各自基于的图形 界面开发框架不同。Win32 Application 强调可直接使用 Windows API 开发,避免引入复杂庞 大的 MFC 框架,而 MFC AppWizard 强调可使用 MFC 框架开发,快速构建稳固的窗口程序。
void CCell::SetValue(char c) {
m_cValue = c; }
实现 GetValue 和 SetValue 函数
1.1.1.2.5.4. 类的使用
在 main 函数中创建一个 CCell 对象,将单元格的值设置为'A',然后获取单元格的值, 观察其是否为'A'。
在 main 函数中编写如下代码: int main(int argc, char* argv[]) {
return 0; }
添加#include 语句之后,重新编译整个项目,发现编译成功。至此,102 个编译错误全部解 决;实际上只修改了第 1 个编译错误。这一实例充分说明了优先解决第 1 个编译错误的重要 性。有时编译结果指出了成千上万个编译错误,按照优先解决第 1 个错误的做法,解决了第 1 个错误之后,再编译时很可能只有几百个错误,再次修改新的第 1 个错误,再次编译时很 可能只剩下几十个错误,反复如此,直到编译成功。
自动生成的文件 2、文件视图 刚创建的控制台项目,文件视图中只有两个 CPP 文件,一个是 main 函数所在文件,另一个 StdAfx.cpp 是预编译机制所用的源文件。
文件视图 3、类视图 刚创建的控制台项目,没有任何类,只有一个全局函数 main 函数。
类视图
另外,由于此控制台程序中没有使用任何资源,因此没有资源视图。
编译单个文件
编译过程中如果出现一些莫名其妙的语法之外的错误,建议先使用<Build>菜单下的<Clean> 菜单项清除全部编译结果,再使用<Rebuild>菜单项完全重新编译整个项目。
1.1.1.3.2. 消除编译错误
最好是在编写代码时就时时注意,降低编译出错的概率。如果无法避免编译出错,那么可以 掌握一些消除编译错误的思路,避免在出现编译错误尤其是冒出几千个编译错误时出现手足 无措的尴尬局面。 一般来讲,写代码时遇到很多编译错误属于正常情况,千万不要气馁。正确的做法是重点关 注第 1 条编译错误。在输出窗口找到第 1 条编译错误,双击错误信息,源代码编辑窗口定位 会定位到错误所在行。 在控制台项目 ConsoleHelloWorld 中,如果不写最后的#include 语句,编译结果会指出 102 个编译错误。现在开始把这些编译错误逐一消除。下图中 cpp 文件名后紧跟的括号中的数字 表示在编译该 cpp 文件的第多少行时出错。
DevStudio Add-in Wizard
开发 VC6.0 的扩展功能应用
ISAPI Extension Wizard
开发 IIS Web 服务器扩展功能应用
MFC ActiveX ControlWizard
开发 ActiveX 控件
MFC AppWizard(dll)
开发基于 MFC 的动态链接库(DLL)
添加类的菜单入口 在添加类窗口中指定类的类型为通用类(Generic),类名这里指定为 CCell,单击<OK>按钮, 完成 CCell 类的添加。
添加完类后,类视图如下:
添加类窗口
添加 CCell 类后的类视图 添加完类后,文件视图如下,其中 Cell.h 文件为类的定义文件,Cell.cpp 为类的实现文件。
1.1.1.3. 编译环境介绍 1.1.1.3.1. 编译过程
单击 工具条按钮,在编译窗口查看编译结果。 如下所示,表明编译完全成功,目标 EXE 文件已经成功创建。
编译成功 如下所示,表明存在 102 个编译错误,目标 EXE 文件没有创建。
编译错误 编译小型项目时,编译过程执行得很迅速,可能编译结果立即就出来了。但编译大型项目时, 项目中部分文件长度比较大,或者文件数量比较多,编译过程可能持续进行 30 分钟甚至更 长时间,这时编译过程会变成一个痛苦的等待过程,。如果代码变动所涉及的文件比较单一, 可考虑仅仅单独编译有变动的单个文件,可以大大节省编译时间。
找到第 1 条编译错误 双击错误信息后,源代码窗口定位的错误所在行代码为:
错误所在行的代码 结合错误信息: ConsoleHelloWorld.cpp(10) : error C2065: 'CCell' : undeclared identifier
可以知道,大致是编译器在编译 ConsoleHelloWorld.cpp 文件时,不认识 CCell 这个类,而我 们明明已添加了 CCell 这个类的定义,就在 Cell.h 文件中。需要说明一下的是,VC6.0 在编 译项目的时候,总是一个 CPP 文件一个 CPP 文件的单独编译,最后才将各个编译结果链接 到一块。VC6.0 在编译 ConsoleHelloWorld.cpp 文件时,根本不知道项目中还有 Cell.h 这个文 件存在。#include 指令可以解决这个问题。
目信息确认界面。
选择具体应用类型
控制台项目具体应用类型
具体应用类型
描述
An empty project没有任何代 Nhomakorabea的空项目。
A simple application
包含一个空的 main 函数的简单项目。
A "Hello,world" application
在控制台输出 Hello,World 的简单项目.
小提示 成员变量一般设计为私有类型,并且成员变量名一般加 m_前缀。
1.1.1.2.5.3. 添加成员函数
在类视图中,在 CCell 类处单击鼠标右键,打开弹出菜单。
弹出菜单 在弹出菜单中单击<Add Member Function>菜单项,打开添加成员函数窗口。输入返回值类 型、函数声明,以及访问类型,单击<OK>按钮完成成员函数的添加。下图为添加 GetValue 函数,用于获取单元格的值。
选择项目类型 小提示 项目名称建议以英文字母组合或汉语拼音组合,不推荐使用中文作为项目名称。 选择项目类型之后,可针对具体的项目类型,进行项目具体特征的定制。不同项目类型需要
定制的具体特征各有不同,后续会针对几种常见的项目类型进行具体说明。
1.1.1.2. 控制台项目 ConsoleHelloWorld 1.1.1.2.1. 项目目标
MFC AppWizard(exe)
开发基于 MFC 的应用程序
Win32 Application
开发基于 Windows API 的窗口应用
Win32 Console Application
开发基于 Windows API 的控制台应用
Win32 Dynamic-Link Library
开发基于 Windows API 的动态链接库(DLL)
按照前文所述方法,启动应用程序向导。 2、选择项目类型
按照前文所述方法,选择项目类型为 Win32 Console Application。输入项目名称 为 ConsoleHelloWorld,单击<OK>按钮,进入控制台应用程序向导。
创建 ConsoleHelloWorld 控制台应用项目
3、选择具体应用类型 选择创建一个典型的 Hello,World 应用程序,单击<Finish>按钮,完成项目配置,进入项
添加函数窗口 按照同样的方式,添加 SetValue 函数,用于设置单元格中的值。
添加 SetValue 函数
添加完成员变量和成员函数之后,类视图完整的 CCell 类如下所示:
完整的 CCell 类
实现 GetValue 和 SetValue 函数 char CCell::GetValue() { return m_cValue; }
添加 CCell 类后的文件视图
1.1.1.2.5.2. 添加成员变量
在类视图中,在 CCell 类处单击鼠标右键,打开弹出菜单。
弹出菜单 在弹出菜单中,点击<Add Member Variable>菜单项,打开添加成员变量窗口。下图为添加 m_cValue 成员变量,用于存储单元格的值。
添加成员变量窗口
1.1.1.1. 应用程序向导
VC6.0 可以创建多种类型的应用程序项目。为了方便用户定制应用程序的具体特征,VC6.0 提供了应用程序向导(AppWizard)。
1.1.1.1.1. 常用项目类型
VC6.0 提供的几种常用项目类型有:
常用项目类型表
项目类型
备注
ATL COM AppWizard
开发基于活动模版库(ATL)的 COM 组件
要使用 CCell 类,先必须包含该类的.H 文件。在 main 函数所在的 ConsoleHelloWorld.cpp 文件中,添加如下代码:
#include "Cell.h" 修订编译错误之后的完整代码如下: #include "stdafx.h" #include "Cell.h" //为了使用 CCell 这个类
1.1.1.1.2. 启动应用程序向导
依次选择主菜单中的<File>=><New>菜单项,可启动应用程序向导。启动向导之后可以选择 要创建的项目类型。
启动应用程序向导
1.1.1.1.3. 选择项目类型
选择项目类型是应用程序向导的第 1 步。选择<Projects>标签页,在左侧项目类型列表 中选择合适的项目类型,然后在右侧选择项目路径,输入项目名称,最后单击<OK>按钮, 进入项目具体特征的配置。
int main(int argc, char* argv[]) {
printf("Hello World!\n");
CCell * pCell = new CCell(); //创建对象 pCell->SetValue( 'A' ); //设置单元格的值
char c = pCell->GetValue(); //获取单元格的值
An Application that support s MFC
使用了 MFC 的控制台项目。
4、项目信息确认
在项目信息确认界面,确认所显示的项目信息是否正是希望创建的项目,确认正确之
后,单击<OK>按钮,完成项目创建,结束应用程序向导。
项目信息确认
1.1.1.2.4. 项目结构
项目信息确认之后,应用程序向导自动生成了一些代码。 1、物理目录
实现一个用于管理单元格的控制台程序,先设置单元格的值为字母 A,然后查看单元格的值。
1.1.1.2.2. 什么是控制台应用程序
控制台应用程序具有类似如下黑窗口的用户界面,主要靠键盘输入和控制台输出和用户交 互。
控制台应用程序
1.1.1.2.3. 创建控制台项目
下面以控制台应用程序为例,描述如何使用应用程序向导创建一个控制台应用程序。 1、启动应用程序向导