一.预处理宏
1. 通用宏
VC6.0中:
Project Setting>C/C++>Preprocessor definitions
VC2005中:
项目属性;配置属性;C/C++;预处理器定义
WIN32:指明是Window 32系统的编译器,一般用作平台识别。
_MBCS/_UNICODE:指明该工程使用的字符集(多字节字符集/UNICODE)。
在VC6.0的“Project Setting>C/C++>Project Options”处将会有/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)Win32 Static Library项目
VC6.0中:
Project Setting>C/C++(Category:General)>Preprocessor definitions:_LIB
如果选择了MFC Support则_WINDOWS,_AFXDLL
VC2005中:
项目属性>常规>配置类型>静态库(.lib)
项目属性>C/C++>预处理器>预处理器定义:_LIB
(2)Win32 Dynamic-Link Library项目
VC6.0中:
Project Setting>C/C++>Preprocessor definitions:_WINDOWS,_USRDLL,DLL_EXPORTS
VC2005中:
项目属性>常规>配置类型>动态库(.dll)
项目属性>C/C++>预处理器>预处理器定义:_WINDOWS;_USRDLL;DLL_EXPORTS
(3)MFC DLL项目
Regular DLL with MFC statically linked(带静态链接MFC的规则DLL)
VC6.0中:
Project Setting>C/C++>Preprocessor definitions:_WINDOWS,_WINDLL,_USRDLL
VC2005中:
项目属性>C/C++>预处理器>预处理器定义:_WINDOWS;_USRDLL
Regular DLL using shared MFC DLL(使用共享MFC DLL的规则DLL)
VC6.0中:
Project Setting>C/C++>Preprocessor definitions:_WINDOWS,_WINDLL,_AFXDLL, _USRDLL
VC2005中:
项目属性>C/C++>预处理器>预处理器定义:_WINDOWS;_USRDLL
MFC Extension DLL(using shared MFC DLL)(MFC扩展DLL)
VC6.0中:
Project Setting>C/C++>Preprocessor definitions:_WINDOWS,_WINDLL,_AFXDLL,_USRDLL
VC2005中:
项目属性>C/C++>预处理器>预处理器定义:_WINDOWS; _AFXEXT
关于VC编译器预处理宏,参考:
《C/C++ Preprocessor Reference-Predefined Macros》
《What’s the difference between the WIN32 and _WIN32 defines in C++》
二.工作目录和控制台程序运行参数
VC6.0中:
“Project Setting>Debug>Working directory”处填写exe程序的工作目录。
在“Project Setting>Debug>Program argument”处填写main运行参数。
VC2005中:
在“项目属性>配置属性>调试>工作目录 ”处填写exe程序的工作目录。
在“项目属性>配置属性>调试>命令参数”处填写main运行参数。
默认的工作目录为ProjectDir,即*.dsw/*.vcproj所在目录。
通过编译器启动(Ctrl + F5)应用程序时,可以将所依赖的lib和dll库文件所在目录设为工作目录。应用程序执行期间,创建、保存文件将在工作目录中。
工作目录是指当前目录,GetCurrentDirectory()得到的路径;SetCurrentDirectory来改变。
运行目录是指exe所在路径,GetModulePath()得到的路径。
三.附加头文件包含
VC6.0中:
VC6.0默认include包含路径:Tools>Options>Directories>Include files。
对于特定项目的头文件包含,在“Project Setting>C/C++ (Category:Preprocessor)>Additional include directories”处添加附加头文件目录,相对目录参考*.dsp文件。
目录路径不需添加双引号,路径分隔符为’/’或’\’,不必考虑反斜杠’\’的转义。多个路径之间以逗号分隔。
相应的在“Project Setting>C/C++> Project Options”中将会出现“/I”的包含命令。
VC2005中:
VC2005默认include包含路径:工具>选项>项目和解决方案>VC++目录>包含文件。
对于特定项目的头文件包含,在“项目属性>配置属性>C/C++>常规>附加包含目录”处添加附加包含目录,相对目录参 考*.vcproj文件。
目录路径不需添加双引号,路径分隔符为’/’或’\’,不必考虑反斜杠’\’的转义。多个路径之间以分号分隔。
相应的在“项目属性>配置属性>C/C++>命令行” 中将会出现“/I”的包含命令。
关于#include的两种包含方式
#include <std>为编译器指定的包含路径下的头文件:即在VC6.0中的 “Tools>Options>Directories>Include files”(对应VC2005的“工具>选项>项目和解决方案>VC++目录à包含文件”)处指定的包含目录。默认情况下包括
(1)$(VCInstallDir)include(\Microsoft Visual Studio\VC98\INCLUDE)、
(2)$(VCInstallDir)atlmfc\include(\Microsoft Visual Studio\VC98\ATL\INCLUDE、\Microsoft Visual Studio\VC98\MFC\INCLUDE)
(3)$(VCInstallDir)PlatformSDK\include(VC2005)。
用户也可以自己添加包含路径到此。
对于“Tools>Options>Directories>Include files”(“工具>选项>项目和解决方案>VC++目录>包含文件”)目录下的文件的包含,一般可使用尖括号包含。系统对尖 括号的包含优先到编译器设置的包含路径下定位,再到附加包含目录下进行定位。
#include "MyHeader.h"为在“Tools>Options>Directories>Include files”(“工具>选项>项目和解决方案>VC++目录>包含文件”)处人工添加的包含路径下的头文件或者附加包含目录下的 头文件。
对于编译器提供的标准库函数头文件,一般使用尖括号进行包含声明,当然使用双引号包含也没有错。
对于在“Tools>Options>Directories>Include files”(“工具>选项>项目和解决方案>VC++目录>包含文件”)处人工添加的包含路径和附加包含目录下的头文件的包含 可以使用尖括号进行包含,但一般使用双引号。
原则上,对于工程或文件可见的包含目录下的头文件包含,使用以上两种包含方式中的任一种都不会出错,主要是它们在搜索目录时的顺序不一样。习惯上使 用尖括号包含标准库函数头文件,使用双引号包含用户自定义头文件。
External Dependencies里面显示的是你的工程要用到的头文件,不在你的工程里面,而且也不在VC的默认包含路径中。参考:《VC6.0的 External Dependencies》。
四.附加链接库包含
VC6.0中:
VC6.0默认lib包含路径:Tools>Options>Directories>Library files
对于特定项目的头文件包含,可以通过以下两步添加附加链接库:
1. 在“Project Setting>Link(Category:Input)>Additional library path”处添加附加库目录,相对目录参考*.dsp文件。
目录路径不需添加双引号,路径分隔符为’/’或’\’,不必考虑反斜杠’\’的转义。多个路径之间以逗号分隔。
相应的将会在“Project Setting>Link>Project Options”处同步“/libpath”库包含命令。
2. 在“Project Setting>Link (Category:General)>Object/Library Modules” 处添加库文件名YourLib.lib(也可在文件中使用#pragma comment(lib, "YourLib.lib")显式导入所依赖的静态库),多个库之间以空格分隔。
相应的将会在“Project Setting>Link>Project Options”处同步包含的库名称。
VC2005中:
VC2005默认lib包含路径:工具>选项>项目和解决方案>VC++目录>库文件
对于特定项目的库文件包含,可以通过以下两种方式添加附加库目录:
1.
(1)在“项目属性>配置属性>链接器>常规>附加库目录”处输入附加库目录路径,相对目录参考*.vcproj文件。
目录路径不需添加双引号,路径分隔符为’/’或’\’,不必考虑反斜杠’\’的转义。多个路径之间以分号分隔。
相应的将会在“项目属性>配置属性>链接器>命令行”处同步“/LIBPATH”库包含命令。
(2)在“项目属性>配置属性>链接器>输入>附加依赖项” 处添加库文件名YourLib.lib(也可在文件中使用#pragma comment(lib, "YourLib.lib")显式导入所依赖的静态库),多个库之间以空格分隔。
相应的将会在“项目属性>配置属性>链接器>命令行”处同步包含的库名称。
2.
在“项目属性>配置属性>链接器>命令行” 处添加库文件名YourLib.lib(必要时添加相对目录,保证YourLib的可见性)。
五.附加DLL调试
VC6.0中:
如果你需要调试的DLL是动态装入(LoadLibrary)的,则需要在“Project Setting>Debug(Category:Additional DLLs)”处添加这个DLL文件。
六.生成文件目录设置
VC6.0中:
在“Project Setting>Link>Output file name”处填写文件输出路径,相对目录参考*.dsp文件。
VC2005中:
在“项目属性>常规>输出目录”处填写文件输出路径,相对目录参考*.vcproj文件。
输出目录(OutDir)一般为$(SolutionDir)$(ConfigurationName)
输出文件(OutputFile)一般为$(OutDir)\$(ProjectName).exe(*.lib,*.dll)
说明:
$(SolutionDir)为*.sln文件所在文件夹;
$(ConfigurationName)为*.sln的*.vcproj文件所在文件夹下的debug、releas文件夹,参 考*.vcproj文件中的<configurations>配置项。
具体在“项目属性>配置属性>调试>命令”下拉点击“编辑”,展开“宏(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目录
参考:
《Managing Solutions, Projects, and Files》
《File Types Created for Visual C++ Projects》
《VC 2005 解决方案的目录结构设置和管理》
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/phunxm/archive/2009/12/26/5082488.aspx
</configurations></std>
发表评论
-
Windows消息机制要点
2011-02-13 17:13 7411. 窗口过程 每个窗口 ... -
Windows的消息机制
2011-02-13 11:33 1694Windows是一个消息(Messag ... -
许多VC++/MFC构架的开源项目
2011-02-09 16:14 1131... -
最好的53个 VC++ /MFC 开源软件项目
2010-12-14 17:51 1558http://www.codeproject.com/KB/c ... -
Matlab与VC混合编程
2010-10-19 23:32 983众所周知,MATLAB是一套功能非常强大的商业数学软件,从信 ... -
VC++中使用MATLAB的C++数学库和MCC生成的程序(转)
2010-10-19 23:31 1640引言 Visual C++ 是由 Mic ... -
VC中如何调用DLL中的函数
2010-10-18 15:03 1101调用DLL有两种方法:静态调用和动态调用. (一).静态调用其 ... -
dll #pragma data_seg 实现数据的共享
2010-10-18 00:52 1452#pragma data_seg("flag_dat ... -
(zz)Vs 2008 解决方案的目录结构设置和管理
2010-10-13 19:20 1230解决方案与项目: 从V ... -
(zz)MFC 入门必读
2010-10-13 13:00 4264以下是很多VC爱好者的 ... -
(zz)VS2008在win7下不时出现Microsoft Incremental Linker已停止工作
2010-10-06 21:48 2408/INCREMENTAL 选项控制链接器如何处理增量链接。 ... -
error LNK2001: unresolved external symbol VC++链接错误详解
2010-10-04 03:40 5882学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌 ... -
error LNK2001: unresolved external symbol _main解决办法(zz)
2010-09-27 04:52 887error LNK2001: unresolved exter ...
相关推荐
base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz
至于压缩包内的"opencv-4.6.0-vc14_vc15.exe"文件,它可能是一个自解压程序,运行后会自动将OpenCV库解压并安装到指定目录,同时可能也会进行一些必要的环境变量配置,以便于在Visual Studio中使用。安装完成后,...
根据提供的文件信息,我们可以深入探讨有关“C/C++/VC项目含视频推箱子小游戏”的相关知识点。本篇文章将重点解析该小游戏的实现原理、技术栈选择及其背后的编程思想。 ### C/C++/VC项目背景 #### 1. 项目概述 该...
在VC6.0中配置和使用NTL库需要以下步骤: 1. **下载与安装**:首先,从提供的链接(http://download.csdn.net/detail/dh_fa/3872845)下载NTL库,解压到本地目录。 2. **包含头文件**:在你的C++源代码中,需要包含...
首先,集成过程的关键在于将NTL库的所有必要文件和配置信息添加到VC项目中。通常,这包括NTL的头文件、库文件以及可能的依赖项。在这个开发包中,已经完成了这些预设工作,因此用户可以直接导入并开始使用。例如,...
### C/C++/VC项目含视频贪吃蛇游戏 #### 一、项目概述 本项目主要涉及使用C/C++及Microsoft Visual C++ (VC) 开发环境构建一个经典的贪吃蛇游戏,并附带相关的视频教程资源。贪吃蛇游戏作为一款历史悠久且广受欢迎...
综上所述,`atguigu_springboot2_zz-master`项目涵盖了SpringBoot2的多个关键知识点,从基础的自动配置、内嵌服务器到高级的Spring Data JPA、安全控制和云原生特性,为开发者提供了一个全面了解和实践SpringBoot2的...
C/C++/VC项目含视频益智小游戏-扫雷大作战提取方式是百度网盘分享地址
ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB
将sysdm.cpl文件复制到c:\widows\system32\ 路径下替换源文件(记得备份源文件),就可以了只能更改我的电脑属性显示配置,至于硬盘信息和显卡信息可修改注册表更改。 本人以此文件推荐大家看电脑时用everest-全面...
《VC 6.0在气象数据处理中的应用》 在信息技术高速发展的今天,软件开发工具的进步为科研工作提供了强大的支持。VC++ 6.0,作为Microsoft公司推出的经典集成开发环境(IDE),在Windows平台上拥有广泛的用户基础。...
这个赛题,即“ZZ-2022010 机器人技术应用赛项”,是针对这一目标而设立的竞赛项目。 赛题通常涵盖以下几个核心知识点: 1. **机器人基础知识**:参赛者需要了解机器人的基本构成,包括机械结构、电子元件、传感器...
wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。
在“zz-doctor”项目中,我们能看到Android的四大组件——Activity、Service、BroadcastReceiver和ContentProvider的运用。Activity是用户界面的主要构成部分,Service用于后台运行任务,BroadcastReceiver处理系统...
计算机网络基础知识试题zz
### 交换机基本配置知识点详解 #### 一、交换机基本概念与工作原理 **1.1 交换机概述** 交换机是局域网(LAN)中不...通过这些基础知识的学习,可以帮助网络管理员更好地理解和操作交换机设备,提高网络性能和安全性。
我们研究了四轻子最终状态ℓ+ℓ-ℓ+ℓ-的产生,这些状态主要由一对弱电Z玻色子ZZ产生。 使用LoopSim方法,我们合并ZZ和ZZ + jet的NLO QCD结果,并获得ZZ产生的近似NNLO预测。 还包括对ZZ过程的精确胶子融合环平方的...
在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。
它不仅可以让开发者了解留言本系统的内部运行机制,还能为他们提供一个实战性的学习案例,以便于理解和应用到自己的项目中。留言板类的应用广泛存在于各种网站和论坛中,它是构建社交互动和用户反馈的重要工具。 在...
该项目为“studyjava-zz”设计源码,深入探索Java编程新视野,共计包含549个文件,涵盖209个Java源代码文件、74个Git忽略文件、70个项目配置文件、68个classpath文件、66个偏好设置文件、25个Markdown文档、16个XML...