`

(zz) VC项目配置基础

阅读更多
一.预处理宏 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&gt;Options&gt;Directories&gt;Include files”(对应VC2005的“工具&gt;选项&gt;项目和解决方案&gt;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&gt;Options&gt;Directories&gt;Include files”(“工具&gt;选项&gt;项目和解决方案&gt;VC++目录&gt;包含文件”)目录下的文件的包含,一般可使用尖括号包含。系统对尖 括号的包含优先到编译器设置的包含路径下定位,再到附加包含目录下进行定位。 #include "MyHeader.h"为在“Tools&gt;Options&gt;Directories&gt;Include files”(“工具&gt;选项&gt;项目和解决方案&gt;VC++目录&gt;包含文件”)处人工添加的包含路径下的头文件或者附加包含目录下的 头文件。 对于编译器提供的标准库函数头文件,一般使用尖括号进行包含声明,当然使用双引号包含也没有错。 对于在“Tools&gt;Options&gt;Directories&gt;Include files”(“工具&gt;选项&gt;项目和解决方案&gt;VC++目录&gt;包含文件”)处人工添加的包含路径和附加包含目录下的头文件的包含 可以使用尖括号进行包含,但一般使用双引号。 原则上,对于工程或文件可见的包含目录下的头文件包含,使用以上两种包含方式中的任一种都不会出错,主要是它们在搜索目录时的顺序不一样。习惯上使 用尖括号包含标准库函数头文件,使用双引号包含用户自定义头文件。 External Dependencies里面显示的是你的工程要用到的头文件,不在你的工程里面,而且也不在VC的默认包含路径中。参考:《VC6.0的 External Dependencies》。 四.附加链接库包含 VC6.0中: VC6.0默认lib包含路径:Tools&gt;Options&gt;Directories&gt;Library files 对于特定项目的头文件包含,可以通过以下两步添加附加链接库: 1. 在“Project Setting&gt;Link(Category:Input)&gt;Additional library path”处添加附加库目录,相对目录参考*.dsp文件。 目录路径不需添加双引号,路径分隔符为’/’或’\’,不必考虑反斜杠’\’的转义。多个路径之间以逗号分隔。 相应的将会在“Project Setting&gt;Link&gt;Project Options”处同步“/libpath”库包含命令。 2. 在“Project Setting&gt;Link (Category:General)&gt;Object/Library Modules” 处添加库文件名YourLib.lib(也可在文件中使用#pragma comment(lib, "YourLib.lib")显式导入所依赖的静态库),多个库之间以空格分隔。 相应的将会在“Project Setting&gt;Link&gt;Project Options”处同步包含的库名称。 VC2005中: VC2005默认lib包含路径:工具&gt;选项&gt;项目和解决方案&gt;VC++目录&gt;库文件 对于特定项目的库文件包含,可以通过以下两种方式添加附加库目录: 1. (1)在“项目属性&gt;配置属性&gt;链接器&gt;常规&gt;附加库目录”处输入附加库目录路径,相对目录参考*.vcproj文件。 目录路径不需添加双引号,路径分隔符为’/’或’\’,不必考虑反斜杠’\’的转义。多个路径之间以分号分隔。 相应的将会在“项目属性&gt;配置属性&gt;链接器&gt;命令行”处同步“/LIBPATH”库包含命令。 (2)在“项目属性&gt;配置属性&gt;链接器&gt;输入&gt;附加依赖项” 处添加库文件名YourLib.lib(也可在文件中使用#pragma comment(lib, "YourLib.lib")显式导入所依赖的静态库),多个库之间以空格分隔。 相应的将会在“项目属性&gt;配置属性&gt;链接器&gt;命令行”处同步包含的库名称。 2. 在“项目属性&gt;配置属性&gt;链接器&gt;命令行” 处添加库文件名YourLib.lib(必要时添加相对目录,保证YourLib的可见性)。 五.附加DLL调试 VC6.0中: 如果你需要调试的DLL是动态装入(LoadLibrary)的,则需要在“Project Setting&gt;Debug(Category:Additional DLLs)”处添加这个DLL文件。 六.生成文件目录设置 VC6.0中: 在“Project Setting&gt;Link&gt;Output file name”处填写文件输出路径,相对目录参考*.dsp文件。 VC2005中: 在“项目属性&gt;常规&gt;输出目录”处填写文件输出路径,相对目录参考*.vcproj文件。 输出目录(OutDir)一般为$(SolutionDir)$(ConfigurationName) 输出文件(OutputFile)一般为$(OutDir)\$(ProjectName).exe(*.lib,*.dll) 说明: $(SolutionDir)为*.sln文件所在文件夹; $(ConfigurationName)为*.sln的*.vcproj文件所在文件夹下的debug、releas文件夹,参 考*.vcproj文件中的<configurations>配置项。 具体在“项目属性&gt;配置属性&gt;调试&gt;命令”下拉点击“编辑”,展开“宏(M)&gt;&gt;”,可以看到很多项目内置宏。 一般的配置为: 输出目录(OutDir):$(ProjectDir)$(PlatformName)\$(ConfigurationName) 中间目录(IntDir):$(OutDir)\Intermediate 输出文件:$(OutDir)\$(ProjectName).lib(dll、exe) 七.依赖项目联编 一个解决方案(dsw、sln)可以创建很多辅助子项目(dsp、vcproj),如何设置使在编译主项目的时,先编译所依赖的辅助项目呢? 一般会配置辅助子项目的OutDir和主项目相同,这样生成的lib或dll对于主项目exe直接可见。 VC6.0中: 选择菜单“Project&gt;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>
分享到:
评论

相关推荐

    base zz zz zz zz

    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-4.6.0-vc14_vc15.exe"文件,它可能是一个自解压程序,运行后会自动将OpenCV库解压并安装到指定目录,同时可能也会进行一些必要的环境变量配置,以便于在Visual Studio中使用。安装完成后,...

    C/C++/VC项目含视频推箱子小游戏

    根据提供的文件信息,我们可以深入探讨有关“C/C++/VC项目含视频推箱子小游戏”的相关知识点。本篇文章将重点解析该小游戏的实现原理、技术栈选择及其背后的编程思想。 ### C/C++/VC项目背景 #### 1. 项目概述 该...

    NTL库VC6.0测试工程

    在VC6.0中配置和使用NTL库需要以下步骤: 1. **下载与安装**:首先,从提供的链接(http://download.csdn.net/detail/dh_fa/3872845)下载NTL库,解压到本地目录。 2. **包含头文件**:在你的C++源代码中,需要包含...

    ntl集成VC开发包

    首先,集成过程的关键在于将NTL库的所有必要文件和配置信息添加到VC项目中。通常,这包括NTL的头文件、库文件以及可能的依赖项。在这个开发包中,已经完成了这些预设工作,因此用户可以直接导入并开始使用。例如,...

    C/C++/VC项目含视频贪吃蛇游戏

    ### C/C++/VC项目含视频贪吃蛇游戏 #### 一、项目概述 本项目主要涉及使用C/C++及Microsoft Visual C++ (VC) 开发环境构建一个经典的贪吃蛇游戏,并附带相关的视频教程资源。贪吃蛇游戏作为一款历史悠久且广受欢迎...

    atguigu_springboot2_zz-master.zip

    综上所述,`atguigu_springboot2_zz-master`项目涵盖了SpringBoot2的多个关键知识点,从基础的自动配置、内嵌服务器到高级的Spring Data JPA、安全控制和云原生特性,为开发者提供了一个全面了解和实践SpringBoot2的...

    C/C++/VC项目含视频益智小游戏扫雷大作战

    C/C++/VC项目含视频益智小游戏-扫雷大作战提取方式是百度网盘分享地址

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    我的电脑属性显示配置修改工具

    将sysdm.cpl文件复制到c:\widows\system32\ 路径下替换源文件(记得备份源文件),就可以了只能更改我的电脑属性显示配置,至于硬盘信息和显卡信息可修改注册表更改。 本人以此文件推荐大家看电脑时用everest-全面...

    VC.rar_VC 6.0

    《VC 6.0在气象数据处理中的应用》 在信息技术高速发展的今天,软件开发工具的进步为科研工作提供了强大的支持。VC++ 6.0,作为Microsoft公司推出的经典集成开发环境(IDE),在Windows平台上拥有广泛的用户基础。...

    ZZ-2022010 机器人技术应用赛项赛题.zip

    这个赛题,即“ZZ-2022010 机器人技术应用赛项”,是针对这一目标而设立的竞赛项目。 赛题通常涵盖以下几个核心知识点: 1. **机器人基础知识**:参赛者需要了解机器人的基本构成,包括机械结构、电子元件、传感器...

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

    中医大夫助理信息系统 zz-doctor

    在“zz-doctor”项目中,我们能看到Android的四大组件——Activity、Service、BroadcastReceiver和ContentProvider的运用。Activity是用户界面的主要构成部分,Service用于后台运行任务,BroadcastReceiver处理系统...

    计算机网络基础知识试题zz.doc

    计算机网络基础知识试题zz

    交换机基本配置 学习

    ### 交换机基本配置知识点详解 #### 一、交换机基本概念与工作原理 **1.1 交换机概述** 交换机是局域网(LAN)中不...通过这些基础知识的学习,可以帮助网络管理员更好地理解和操作交换机设备,提高网络性能和安全性。

    超出NLO QCD的高横向动量的ZZ产生

    我们研究了四轻子最终状态ℓ+ℓ-ℓ+ℓ-的产生,这些状态主要由一对弱电Z玻色子ZZ产生。 使用LoopSim方法,我们合并ZZ和ZZ + jet的NLO QCD结果,并获得ZZ产生的近似NNLO预测。 还包括对ZZ过程的精确胶子融合环平方的...

    zz CAD快速计算长度插件

    在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。

    zz809.com留言本

    它不仅可以让开发者了解留言本系统的内部运行机制,还能为他们提供一个实战性的学习案例,以便于理解和应用到自己的项目中。留言板类的应用广泛存在于各种网站和论坛中,它是构建社交互动和用户反馈的重要工具。 在...

    基于Java与HTML的studyjava-zz设计源码,深入探索Java编程新视野

    该项目为“studyjava-zz”设计源码,深入探索Java编程新视野,共计包含549个文件,涵盖209个Java源代码文件、74个Git忽略文件、70个项目配置文件、68个classpath文件、66个偏好设置文件、25个Markdown文档、16个XML...

Global site tag (gtag.js) - Google Analytics