Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18672572
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: C/C++

2008-05-25 20:53:28

visual C++ 6.0开发工具与调试》

1、          如何快速地范代码缩进格式

中所需要范的代,按shift+F8

2、          如何在Release状态调试

Project->Setting=>ProjectSetting对话框,选择Release状态C/C++标签中的CategoryGeneral,OptimizationsDisable(Debug),Debut infoProgram Database。在Link标签Generate debug info复选框。

 

注:只是一介乎Debug合Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已正的用,而不表,但是这种状态QuickWatch、列跟踪功能仍然有效,和Debug版一

 

3、          Release和Debug有什不同。

Release版称为发行版,Debug版称为调试版。

Debug中可以行、跟踪等功能,但生成的可行文件比大,代码运行速度慢。Release版行速度快,可行文件小,但在其编译条件小无法调试功能。

Release的exe文件接的是准的MFC DLL(Use MFC in a shared or static dll),比如MFC42.DLL。DLL在安装Windows的候,已配置,所以些程序能有安装Visual C++ 6.0的机器上行。而Debug版本的exe接了调试版本的MFC DLL文件,如MFC42D.DLL。在有安装Visual C++6.0的机器上不能行,因MFC42D.DLL等,除非选择use static dll when link。

 

4、          ASSERT和VERIFY有什么区别

ASSERT里面的容在Release版本中不编译VERIFY里面的容仍然翻,但不再判断真假。所以后者更安全一点。

例如ASSERT(file.Open(strFileName))。

一旦到了Release版本中,一行就忽略了,file根本就不Open()了,而且有任何出的信息。如果用VERIFY()就不这个问题

 

5、          Workspace和Project之是什么样

Workspace可以包括几project,但只有一个处Active状态,各project之可以有依赖关系,在project的Setting..中可以定,比如那Active状态project可以依于其他的提供其函数调用的静态库

 

6、          如何在非MFC程序中使用ClassWizard

在工程目下新建一空的.RC文件,然后加入到工程中就可以了。

 

7、          如何

F9在前光标处增加一个断点和取消一个断点。

另外,在编辑状态下,按Ctrl+B对话框。然后单击Condition…】按钮弹件的对话置。

 

8、          编辑状态发现成员变量或函数不能显示提示是如何打开显示功能

似乎是目前这个Visual C++ 6.0版本的一bug,可按如下步使其正常,如再出,可如法炮制:

(1)             关闭Project

(2)             “工程名.ncb”文件

(3)             重新打工程

 

9、          如何ClassWizard生成的类彻

首先在工作FileView中该类.h和.cpp文件,按delete除,然后在文件管理器中将这两个文件除,再ClassWizard,这时是否移走该类的提示,选择remove就可以了。

 

10、     如何workspace中消失的找出

开该类对应文件,然后便改一下,这个时候工作新的,再将这个类改回原的名字就可以了。

 

11、     如何楚所有的

Edit】->【Breakpoints…】,打“Breakpoints”对话框,单击Remove All】按即可。

快捷“Ctrl + Shift + F8”。

 

12、     如何再ClassWizard中选择未列出的信息

“ClassWizard”对话框,然后切“Class Info”面。改“Message filter”,如选择“Window”,“Message”面就Window的信息。

 

13、     如何检测程序中的括是否匹配

把光到需要检测的括前面,按快捷“Ctrl + ]”。如果括匹配正确,光就跳到匹配的括号处,否不移且机箱喇叭还会发出一警告。

 

14、     如何看一(或量、函)的定

把光到要看的一宏上,就比如最常DECLARE_MAP_MESSAGE上按一下F12(或右中的相),如果有建立浏览文件,就提示对话框,按【确定】按,然后就跳到(或量、函)定的地方。

 

15、     如何添加Lib文件到当前工程

单击菜单【Project】->Settings…】弹出“Project Setting”对话框,切换到“Link”标签页,在“Object/library modules”处输入Lib文件名称,不同的Lib之间用空格格开。

 

16、     如何快速删除项目下的Debug文件夹中临时文件

在工作区的FileView视图中选中对应的项目,单击右键弹出菜单,选择【Clean(selection only)】菜单即可。

 

17、     如何快速生成一个现有工程除了工程名外完全相同的新工程。

在新建工程的“New”对话框中选择“Custom Appwizard”项,输入新工程的名字,单击【OK】按钮。出现“Custom AppWizard”项,输入新工程的名字,单击【OK】按钮。出现“Custom AppWizardStep 1 of 2”对话框,选择“An existing Project”项,单击【Next】按钮。出现“Custom AppWizardStep 2 of 2”对话框,选择现有工程的工程文件名,最后单击【Finish】按钮。编译后就生成一个与现有工程相同但可以重新取名的工程AppWizard

现在就可以项用MFC AppWizard一样用这个定制的向导。如果不想用了,可以在Visual C++ 6.0安装目录下Common\MSDev98\Template目录中删除该Wizard对应的.awx.pdb文件。

 

18、     如何解决Visual C++ 6.0不正确连接的问题

情景:明明之间改动了一个文件,却要把整个项目全部重新编译链接一次。刚刚链接好,一运行,有提示重新编译链接一次。

这是因为出现了未来文件(修改时间和创建时间比系统时间晚)的缘故。可以这样处理:找到工程文件夹下的debug目录,将创建和修改时间都比系统时间的文件全部删除,然后再从新“Rebuild All”一次。

 

19、     引起LNK2001的常见错误都有哪些

遇到的LNK2001错误主要为:unresolved external symbol “symbol”

如果链接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误信息。

一般来说,发生错误的原因有两个:一时所引用的函数、变量不存在,拼写不正确或者使用错误;其次可能使用了不同版本的链接库。一下是可能产生LNK2001错误的原因:

<1>由于编码错误导致的LNK2001错误

(1)             不相匹配的程序代码或模块定义(.DEF)文件导致LNK2001。例如,如果在C++源文件了内声明了一变量“var1”,却视图在另一个文件内以变量“var1”访问改变量。

(2)             如果使用的内联函数是在.cpp文件内定义的,而不是在头文件内定义将导致LNK2001错误。

(3)             调用函数是如果所用的参数类型头函数声明是的类型不符将会产生LNK2001错误。

(4)             视图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001错误。

(5)             要注意函数和变量的可公用性,只有全局变量、函数时可公用的。静态函数和静态变量具有相同的使用范围限制。当试图从文件外部方位任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001错误。

<2>由于编译和联机的设置而造成的LNK2001错误

(1)             如果编译时使用的时/NOD(/NODERAULTLIB)选项,程序所需要的运行库和MFC时将得到又编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会北链接进工程文件。这种情况下使用/NOD将导致LNK2001错误

(2)             如果没有为wWinMainCRTStartup设定程序入口,在使用UnicodeMFC时讲的到“unresolved external on _WinMain@16”的LNK2001错误信息。

(3)             使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“__imp__func”的引用。如果试图使用静态库LIBC.LIBLIBCMT.LIB进行链接,将在__imp__func上发生LNK2001错误。如果不使用/MD选项编译,在使用MSVCxx.LIB链接时也会发生LNK2001错误。

(4)             使用/ML选项编译时,如用LIBCMT.LIB链接回在_errno上发生LNK2001错误。

(5)             当编译调试版的应用程序时,如果采用发行版模态库进行链接也会产生LNK2001错误;同样,使用调试版模态库链接发行版应用程序时也会产生相同的错误。

(6)             不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。

(7)             在不同的模块中使用内联和非内联的编译选项能够导致LNK2001错误。如果创建C++库时打开了函数内联(/Ob1/Ob2),但是在描述该函数的相应头问卷安里却关闭了函数内联(没有inline关键字),只是将得到错误信息。为避免该问题的发生,应该在相应的头文件中用inline关键字标志为内联函数。

(8)             不正确的/SUBSYSTEMENTRY设置也能导致LNK2001错误。

 

20、     如何调试一个没有源码的exe文件调用的dll

Visual C++ 6.0中,进入“Project Setting”对话框然后选择Debug标签页。通常Visual Studio默认“executable for debug session”为可执行文件名,但可以将他改成任何你想要的程序。甚至可以指定不同的工作目录以及传递参数到你的程序。这个技术常用来调试Dlls、名字空间扩展、COM对象和其他从某些EXE以及从第三方的EXE中调用的plug-in程序。

 

21、     Visual C++ 6.0工程中的项目文件都表示什么。

.opt:工程关于开发化境的参数文件。如工具条位置等信息。

.aps(AppStudio File)资源辅助文件,二进制格式,一般不用去管他。

.clwClassWizard信息文件,实际上是INI文件格式,又兴趣可以研究一下。有时候ClassWizard出了问题,手工修改CLW文件可以解决。如果此文件不存在的话,每次用ClassWizard的时候回提示是否重建。

.dsp(DevelopStudio Project):项目文件,文本格式,不过不熟悉的或不要手工修改。

.dsw(DevelopStudio Workspace):是工作区文件,其他特点和.dsp差不多。

.plg:是编译信息文件,编译时的errorwarning信息文件(实际上时一个html文件),一般用处不大。在单击菜单【Tool】->Option】弹出的对话框里面有个选项可以控制这个文件的生成。

.hpj(Help Project):是生成帮助文件的工程,用microsoft Help Compiler可以处理。

.mdp(Microsoft DevStudio Project):是旧版本的项目文件,如果要打开此文件的话,回提示你是否转换成新的.dsp格式。

.bsc:是用于浏览项目信息的,如果用Source Brower的话旧必须又这个文件。如果不用这个功能的话,可以在Project Options里面去掉Generate Browse Info File,这样可以加快编译速度。

.map是执行文件的影像信息记录文件,除非对系统底层,这个文件一般用不着。

.pch(Pre-Compiled File):是与编译文件,可以加快编译速度,但是文件非常大。

.pdb(Program Database),记录了程序有关的一些数据和调试信息,在调试的时候可能有用。

.exp:只有在编译DLL的时候才会生成,记录了DLL文件的一些信息,一般也没有用。

.ncb:无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。编译工程后回自动生成。

阅读(227) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~