VC Studio 使用技巧

VC Studio 使用技巧(转载)

 

1.检测程序中的括号是否匹配

把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,

键入快捷键“Ctrl]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,

并且机箱喇叭还会发出一声警告声。

 

2.查看一个宏(或变量、函数)的宏定义

把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12

(或右键菜单中的Go To Defition Of ),如果没有建立Browse files,会出现提示对话框,

确定,然后就会跳到定义那些东西的地方。

 

3.格式化一段乱七八糟的源代码

选中那段源代码,按ATL+F8

 

4.在编辑状态下发现成员变量或函数不能显示

删除该项目扩展名为.ncb文件,重新打开该项目。

 

5.如何整理ClassView视图中大量的类

可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对

应的文件夹中,使整个视图看上去清晰明了

.

6.定位预处理指定

在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.

 

7.如何添加系统中Lib到当前项目

Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib

间用空格格开.

 

8.如何添加系统中的头文件(.h)到当前项目.

#include <FileName.h>,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉

编译在当前目录找.

 

9.如何在Studio使用汇编调试

WorkBenchDebugger状态下按CTRL+F7.

 

10.怎样处理ClassZiard找不到的系统消息

如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizardClass Info

中将Message filter改为Window就有了.

 

 

11.如何干净的删除一个类

先从Workspace中的FileView中删除对应的.h.cpp文件,再关闭项目,从实际的文件夹中

删除对应的.h.cpp文件与.clw文件。

 

12.如果让控制台应用程序支持mfc类库

可以在控制台应用程序中include 来引入mfc库,但是控制台应用程序缺省是单线程的,m

fc是多线程的,为解决该矛盾,在project setting->c/c++ 选项,选择code generation,

use run-time library 下拉框中选择debug multithread

 

13.如何汉化只有可执行代码的.exe 文件

nt 下利用vc open file resources方式打开*.exe 文件,直接修改资源文件,然后保

存即可。

 

附:VC项目文件说明

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

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

.clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWiz

ard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘

提示你是否重建.

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

DeveloperStudio Workspace)是工作区文件,其他特点和DSP差不多.

.plg 是编译信息文件,编译时的errorwarning信息文件(实际上是一个html文件),一般用

处不大.Tools->Options里面有个选项可以控制这个文件的生成.

.hpj (Help Project)是生成帮助文件的工程,microsfot 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)。当自动完成功能出问题时可以删除此文件。b

uild后会自动生成。

 

VC++的链接错误LNK2001(转)

VC/MFC社区中经常看到有人问一些编译错误怎么解决的问题,很多错误都是VC++

的链接错误LNK2001,所以把这篇我记不得从什么地方获得的文章贴出来,也许对大家有点帮助。在此要感谢本文的原始作者,为他的专业精神!

学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于

编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,

编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不

明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001

常困难。

  初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:

  unresolved external symbol symbol”(不确定的外部“符号”)。

  如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或

标签,将产生此错误消息。一般来说,发生错误的原因有两个:一是所引用

的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本

的连接库。

  以下是可能产生LNK2001错误的原因:

  一.由于编码错误导致的LNK2001

  1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。例如,

如果在C++ 源文件内声明了一变量“var1”,却试图在另一文件内以变量

VAR1”访问该变量,将发生该错误。

  2.如果使用的内联函数是在.CPP文件内定义的,而不是在头文件内定

义将导致LNK2001错误。

  3.调用函数时如果所用的参数类型同函数声明时的类型不符将会产生

LNK2001

  4.试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001

  5.要注意函数和变量的可公用性,只有全局变量、函数是可公用的。

  静态函数和静态变量具有相同的使用范围限制。当试图从文件外部访问

任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001

  函数内声明的变量(局部变量) 只能在该函数的范围内使用。

  C++ 的全局常量只有静态连接性能。这不同于C,如果试图在C++的

多个文件内使用全局变量也会产生LNK2001错误。一种解决的方法是需要时在

头文件中加入该常量的初始化代码,并在.CPP文件中包含该头文件;另一种

方法是使用时给该变量赋以常数。

  二.由于编译和链接的设置而造成的LNK2001

  1.如果编译时使用的是/NOD/NODEFAULTLIB)选项,程序所需要的运行

库和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.不正确的/SUBSYSTEM/ENTRY设置也能导致LNK2001

  其实,产生LNK2001的原因还有很多,以上的原因只是一部分而已,对初

学者来说这些就够理解一阵子了。但是,分析错误原因的目的是为了避免错

误的发生。LNK2001错误虽然比较困难,但是只要注意到了上述问题,还是能

够避免和予以解决的。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值