ProjectSetting>C/C++>PreprocessordefinitionsVC2005中:
项目属性>配置属性>C/C++>预处理器定义
WIN32:指明是Window32系统的编译器,一般用作平台识别。
_MBCS/_UNICODE:指明该工程使用的字符集(多字节字符集/UNICODE)。在VC6.0的“ProjectSetting>C/C++>ProjectOptions”处将会有/D\"_MBCS\"或/D\"_UNICODE\"开关。
在VC2005的“项目属性>配置属性>常规>项目默认值>字符集”中选择“使用多字节字符集”或“使用Unicode字符集”;在“项目属性>配置属性>C/C++>使用UNICODE响应文件”中选择“是”或“否”。在“项目属性>配置属性>C/C++>命令行”处将会有/D\"_MBCS\"或/D\"_UNICODE\"/D\"UNICODE\"开关。
_CONSOLE/_WINDOWS:指明应用程序的类型(控制台程序/Windows窗口应用程序)。
_DEBUG/NDEBUG:指明编译版本(Debug/Release)。
除此之外,VC不同的项目类型,有一些特定的宏,以在编译器区分项目类型。2.特定宏
(1)Win32StaticLibrary项目VC6.0中:
ProjectSetting>C/C++(Category:General)>Preprocessordefinitions:_LIB如果选择了MFCSupport则_WINDOWS,_AFXDLLVC2005中:
项目属性>常规>配置类型>静态库(.lib)
项目属性>C/C++>预处理器>预处理器定义:_LIB
(2)Win32Dynamic-LinkLibrary项目VC6.0中:
ProjectSetting>C/C++>Preprocessordefinitions:_WINDOWS,_USRDLL,DLL_EXPORTSVC2005中:
项目属性>常规>配置类型>动态库(.dll)项目属性>C/C++>预处理器>预处理器定义:_WINDOWS;_USRDLL;DLL_EXPORTS(3)MFCDLL项目
<1>RegularDLLwithMFCstaticallylinked(带静态链接MFC的规则DLL)VC6.0中:
ProjectSetting>C/C++>Preprocessordefinitions:_WINDOWS,_WINDLL,_USRDLLVC2005中:
项目属性>C/C++>预处理器>预处理器定义:_WINDOWS;_USRDLL<2>RegularDLLusingsharedMFCDLL(使用共享MFCDLL的规则DLL)VC6.0中:
ProjectSetting>C/C++>Preprocessordefinitions:_WINDOWS,_WINDLL,_AFXDLL,_USRDLLVC2005中:
项目属性>C/C++>预处理器>预处理器定义:_WINDOWS;_USRDLL<3>MFCExtensionDLL(usingsharedMFCDLL)(MFC扩展DLL)VC6.0中:
ProjectSetting>C/C++>Preprocessordefinitions:_WINDOWS,_WINDLL,_AFXDLL,_USRDLLVC2005中:
项目属性>C/C++>预处理器>预处理器定义:_WINDOWS;_AFXEXT关于VC编译器预处理宏,参考:
《C/C++PreprocessorReference-PredefinedMacros》
《What’sthedifferencebetweentheWIN32and_WIN32definesinC++》二.工作目录和控制台程序运行参数VC6.0中:
“ProjectSetting>Debug>Workingdirectory”处填写exe程序的工作目录。在“ProjectSetting>Debug>Programargument”处填写main运行参数。VC2005中:
在“项目属性>配置属性>调试>工作目录”处填写exe程序的工作目录。在“项目属性>配置属性>调试>命令参数”处填写main运行参数。默认的工作目录为ProjectDir,即*.dsw/*.vcproj所在目录。
通过编译器启动(Ctrl+F5)应用程序时,可以将所依赖的lib和dll库文件所在目录设为工作目录。应用程序执行期间,创建、保存文件将在工作目录中。工作目录是指当前目录,GetCurrentDirectory()得到的路径;SetCurrentDirectory来改变。
运行目录是指exe所在路径,GetModulePath()得到的路径。三.附加头文件包含VC6.0中:
VC6.0默认include包含路径:Tools>Options>Directories>Includefiles。对于特定项目的头文件包含,在“ProjectSetting>C/C++(Category:Preprocessor)>Additionalincludedirectories”处添加附加头文件目录,相对目录参考*.dsp文件。
目录路径不需添加双引号,路径分隔符为’/’或’\\’,不必考虑反斜杠’\\’的转义。多个路径之间以逗号分隔。
相应的在“ProjectSetting>C/C++>ProjectOptions”中将会出现“/I”的包含命令。
VC2005中:
VC2005默认include包含路径:工具>选项>项目和解决方案>VC++目录>包含文件。对于特定项目的头文件包含,在“项目属性>配置属性>C/C++>常规>附加包含目录”处添加附加包含目录,相对目录参考*.vcproj文件。
目录路径不需添加双引号,路径分隔符为’/’或’\\’,不必考虑反斜杠’\\’的转义。多个路径之间以分号分隔。
相应的在“项目属性>配置属性>C/C++>命令行”中将会出现“/I”的包含命令。关于#include的两种包含方式
#include “Tools>Options>Directories>Includefiles”(对应VC2005的“工具>选项>项目和解决方案>VC++目录à包含文件”)处指定的包含目录。默认情况下包括(1)$(VCInstallDir)include(\\MicrosoftVisualStudio\\VC98\\INCLUDE)、$(VCInstallDir)atlmfc\\include(2)(\\MicrosoftVisualStudio\\VC98\\ATL\\INCLUDE、\\MicrosoftVisualStudio\\VC98\\MFC\\INCLUDE)(3)$(VCInstallDir)PlatformSDK\\include(VC2005)。用户也可以自己添加包含路径到此。 对于“Tools>Options>Directories>Includefiles”(“工具>选项>项目和解决方 案>VC++目录>包含文件”)目录下的文件的包含,一般可使用尖括号包含。系统对尖括号的包含优先到编译器设置的包含路径下定位,再到附加包含目录下进行定位。#include\"MyHeader.h\"为在“Tools>Options>Directories>Includefiles”(“工具>选项>项目和解决方案>VC++目录>包含文件”)处人工添加的包含路径下的头文件或者附加包含目录下的头文件。 对于编译器提供的标准库函数头文件,一般使用尖括号进行包含声明,当然使用双引号包含也没有错。 对于在“Tools>Options>Directories>Includefiles”(“工具>选项>项目和解决方 案>VC++目录>包含文件”)处人工添加的包含路径和附加包含目录下的头文件的包含可以使用尖括号进行包含,但一般使用双引号。 原则上,对于工程或文件可见的包含目录下的头文件包含,使用以上两种包含方式中的任一种都不会出错,主要是它们在搜索目录时的顺序不一样。习惯上使用尖括号包含标准库函数头文件,使用双引号包含用户自定义头文件。 ExternalDependencies里面显示的是你的工程要用到的头文件,不在你的工程里面,而且也不在VC的默认包含路径中。参考:《VC6.0的ExternalDependencies》。四.附加链接库包含VC6.0中: VC6.0默认lib包含路径:Tools>Options>Directories>Libraryfiles对于特定项目的头文件包含,可以通过以下两步添加附加链接库: 1.在“ProjectSetting>Link(Category:Input)>Additionallibrarypath”处添加附加库目录,相对目录参考*.dsp文件。 目录路径不需添加双引号,路径分隔符为’/’或’\\’,不必考虑反斜杠’\\’的转义。多个路径之间以逗号分隔。 相应的将会在“ProjectSetting>Link>ProjectOptions”处同步“/libpath”库包含命令。2.在“ProjectSetting>Link(Category:General)>Object/LibraryModules”处添加库文件名YourLib.lib(也可在文件中使用#pragmacomment(lib,\"YourLib.lib\")显式导入所依赖的静态库),多个库之间以空格分隔。 相应的将会在“ProjectSetting>Link>ProjectOptions”处同步包含的库名称。VC2005中: VC2005默认lib包含路径:工具>选项>项目和解决方案>VC++目录>库文件对于特定项目的库文件包含,可以通过以下两种方式添加附加库目录:1. (1)在“项目属性>配置属性>链接器>常规>附加库目录”处输入附加库目录路径,相对目录参考*.vcproj文件。 目录路径不需添加双引号,路径分隔符为’/’或’\\’,不必考虑反斜杠’\\’的转义。多个路径之间以分号分隔。 相应的将会在“项目属性>配置属性>链接器>命令行”处同步“/LIBPATH”库包含命令。(2)在“项目属性>配置属性>链接器>输入>附加依赖项”处添加库文件名 YourLib.lib(也可在文件中使用#pragmacomment(lib,\"YourLib.lib\")显式导入所依赖的静态库),多个库之间以空格分隔。 相应的将会在“项目属性>配置属性>链接器>命令行”处同步包含的库名称。 2. 在“项目属性>配置属性>链接器>命令行”处添加库文件名YourLib.lib(必要时添加相对目录,保证YourLib的可见性)。五.附加DLL调试VC6.0中: 如果你需要调试的DLL是动态装入(LoadLibrary)的,则需要在“ProjectSetting>Debug(Category:AdditionalDLLs)”处添加这个DLL文件。六.生成文件目录设置VC6.0中: 在“ProjectSetting>Link>Outputfilename”处填写文件输出路径,相对目录参考*.dsp文件。VC2005中: 在“项目属性>常规>输出目录”处填写文件输出路径,相对目录参考*.vcproj文件。输出目录(OutDir)一般为$(SolutionDir)$(ConfigurationName) 输出文件(OutputFile)一般为$(OutDir)\\$(ProjectName).exe(*.lib,*.dll)说明: $(SolutionDir)为*.sln文件所在文件夹; $(ConfigurationName)为*.sln的*.vcproj文件所在文件夹下的debug、releas文件夹,参考*.vcproj文件中的 具体在“项目属性>配置属性>调试>命令”下拉点击“编辑”,展开“宏(M)>>”,可以看到很多项目内置宏。一般的配置为: 输出目录(OutDir):$(ProjectDir)$(PlatformName)\\$(ConfigurationName)中间目录(IntDir):$(OutDir)\\Intermediate输出文件:$(OutDir)\\$(ProjectName).lib(dll、exe)七.依赖项目联编 一个解决方案(dsw、sln)可以创建很多辅助子项目(dsp、vcproj),如何设置使在编译主项目的时,先编译所依赖的辅助项目呢? 一般会配置辅助子项目的OutDir和主项目相同,这样生成的lib或dll对于主项目exe直接可见。VC6.0中: 选择菜单“Project>Dependencies”可以选择需要联编的项目。VC2005中: 在解决方案资源管理器中右击项目名称,选择“引用”或“项目依赖项”菜单,可选择项目依赖项,并可以设置依赖顺序。八.关于相对目录 相对目录是相对某个文件而言的,例如在VC项目属性配置附加包含目录、附加库目录则是相对*.dsp、*.vcproj文件而言的;在某个*.c、*.cpp文件中使用#include包含命令,是相对这个*.c、*.cpp文件而言的。 当前目录是可见的,一般直接引用文件名(夹),对于子文件夹可以添加”.\\”。..:父目录 ../include:父目录下的include目录../..:祖父目录 ../../include:祖父目录下的include目录 参考: 《ManagingSolutions,Projects,andFiles》《FileTypesCreatedforVisualC++Projects》《VC2005解决方案的目录结构设置和管理》本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/phunxm/archive/2009/12/26/5082488.aspx 因篇幅问题不能全部显示,请点此查看更多更全内容