VC操作编译的基础问题的方法
VC操作编译的基础问题的方法
作者:lixiaosan
时间:09/06/2006
首先,需要说明的是安装vc6后需要安装vc6的补丁sp6,到下载页 。sp6解决了以前发现的一些问题。
1. 安装任何SDK后,vc的一般设置问题。
如果该SDK有安装说明,就按照安装说明做。如果没有说明,一般来说你需要在vc的菜单Tools->Option->Directories ->下的Include和Library中包含开发库的include和library的路径,而且添加的路径最好放在其他路径前面。如果还有 dll,那么需要把需要的dll拷贝到你的程序的当前目录下。
2. 没有更改源代码,每次编译仍要编译。
可能的原因是,你改动过当前机器的系统时间,或把该工程考到其他机器上的vc编译过,而其他机器的系统时间快于你的机器时间。VC编译是根据文件的修改时间来确定哪个文件需要编译。
解决方法:把当前机器的系统时间改早一点,然后修改那几个文件,编译一次。然后再把时间改回来,再重新编译。
3. release 版本下 ON_MESSAGE(),ON_REGISTERED_MESSAGE(),ON_THREAD_MESSAGE(),ON_REGISTERED_THREAD_MESSAGE()出错
Q195032:
PRB: Incorrect Function Signatures May Cause Problems in Release
http://support.microsoft.com/kb/195032/en-us
4. #include "" 和 #include <> 区别
include ""是先从本地目录开始寻找,然后去系统路径寻找
Include <> 相反,先从系统目录查找,后从本地目录
具体详见msdn文章The #include Directive
http://msdn2.microsoft.com/en-us/library/36k2cdd4.aspx
5. 让工程支持unicode编译
这里先解释一下使用unicode的原因:如果要让你的软件支持多国语言,也就是国际化吧,比如东亚语系cjk(中日韩),由于这些国家语言的每个字符都是以宽字符(wide character即两个字节)表示的,而unicode字符集(unicode character set)是一个宽字符集,所以自然的使用unicode就顺理成章了。
下面就说一下如何在vc6中进行unicode编译
1.菜单Build-->Configurations-->Add,添加一个Unicode Debug。
2.菜单Build-->Set Active Configuration,选择Win32 Unicode Debug。
3.菜单Project-->Settings->C/C++属性页->Category中,选择Preprocessor,在Preprocessor definitions中添加 _UNICODE。
4.菜单Project-->Settings->Link属性页->Category选中,选择Output,在Entry- point symbol中写入wWinMainCRTStartup。如不执行该步骤,会出现错误"unresolved external symbol _WinMain@16"。
5.在编码过程中的字符串处理,如使用到char的地方用TCHAR替代;用到c runtime库的地方,用前缀"_tcscpy"的对应函数替代,如strcpy用_tcscpy替代;显示字符串的地方,用_TEXT() (or _T()) 宏,如
"abc"用_T("abc")替代。
相关文章:http://www.codeproject.com/cpp/unicode.as
6. 双击vc6的dsw文件打开多个vc6的实例的问题
有时侯,需要打开多个vc6的工程,但是十分遗憾,每次双击dsw文件,都会覆盖原来打开的工程。
这里给出解决办法:
资源管理器->工具->文件夹选项->文件类型->选择dsw->高级->编辑->勾掉“使用dde”
7.在vc中设置栈的大小
有时,分配一个比较大的数组时,会在运行时发生错误,提示Stack overflow。原因是因为在32位系统下,
堆内存可达到4G的空间,但是对于栈来说,一般空间大小有限制,在VC6下,默认的栈空间大小是1M。所以你可以用new操作符在堆上动态非配内存。
如果你需要一个大的数组,同时又不想动态分配内存,可以在vc6中修改栈的大小:
project->Settings->link->category中选择output->reserve中设定栈大小,最小4Byte
不过要注意,开较大的栈会增加内存