搜档网
当前位置:搜档网 › VS2010 C++环境下DLL和LIB文件目录及名称修改

VS2010 C++环境下DLL和LIB文件目录及名称修改

?登录|注册?

标题

标题不能为空

网址

标签

摘要

公开

取消收藏

?

?

传PPT/文档

提问题

写博客

传资源

创建项目

创建代码片

?

设置昵称编辑自我介绍,让更多人了解你

帐号设置退出

?社区

博客

论坛

下载

技术问答

极客头条

服务

学院

CODE

活动

CSTO

C币兑换

俱乐部

CTO俱乐部

高校俱乐部

做一个技术精纯的软件工程师

?目录视图

?摘要视图

?订阅

下载CSDN移动客户端微信开发学习路线高级篇上线《Cocos3D与Shader从入门到精通》套餐限时优惠恭喜博主张安站新书上市

VS2010 C++环境下DLL和LIB文件目录及名称修改

分类:VC/MFC/Windows编程2013-01-15 22:47 6709人阅读评论(1) 收藏举报DLL工程,Debug版本下输出文件由basetool.dll basetool.lib 改为basetoolD.dll basetoold.lib 需设置:

1、配置属性-常规-目标文件名$(ProjectName) 加d

2、配置属性-连接器-常规-输出问件由加d

3、配置属性-连接器-高级-导入库,设置文件名$(OutDir)$ProjectName)d.lib

4、如果有导出文件,.def文件中也一定要修改导出库的名字

LIBRARY "BaseTool"

变为

LIBRARY "BaseToold"

关于相对目录

相对目录是相对某个文件而言的,例如在VC项目属性配置附加包含目录、附加库目录则是相对*.dsp、*.vcproj文件而言的;在某个*.c、*.cpp文件中使用#include包含命令,是相对这个*.c、*.cpp文件而言的。

当前目录是可见的,一般直接引用文件名(夹)

对于子文件夹可以添加“./”。

..:父目录

../include:父目录下的include目录

../..:祖父目录

https://www.sodocs.net/doc/853690741.html,/include:祖父目录下的include目录

-----------------------------------------------------

C/C++附加包含目录和VC++目录包含目录区别?

连接器常规附加库目录和VC++目录库目录区别?

连接器-输入-附加依赖项

附加依赖项是指输入项,如某个.LIB文件a.lib,添加到附加依赖项,你的LIB文件被真正包含进来了。等同于“#pragma comment(lib, "winsock.lib") ”语句

附加库目录是你用#pragma comment(lib,"a.lib")的时候;此时就搜索a.lib的路径列表就包含这个路径。

把它所在的目录添加到附加库目录里面:仅仅包含目录只是告诉IDE,搜索没有指定路径的库文件时,也搜索这里。

------------------------------------------------------------------------------------------------------------------------------------

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"开关。

当项目中的文件具有UNICODE 路径(例如中文路径)时,应在“项目属性→ C/C++→ 常规”和“项目属性→ 链接器→ 常规”中开启“使用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项目

<1>Regular DLL with MFC statically linked(带静态链接MFC的规则DLL)

VC6.0中:

Project Setting→ C/C++→ Preprocessor definitions:

_WINDOWS,_WINDLL,_USRDLL

VC2005中:

项目属性→ C/C++→ 预处理器→ 预处理器定义:_WINDOWS;_USRDLL

<2>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

<3>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

在DLL项目中,_USRDLL宏表示生成Export Lib!

关于VC编译器预处理宏,参考:

《Predefined Macros(VC6.0)》

《C/C++ Preprocessor Reference-Predefined Macros(VC8.0)》

《What?s the difference between the WIN32 and _WIN32 d efines 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所在路径,可通过GetModuleFileName()得到。

三.附加头文件包含

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为编译器指定的包含路径下的头文件:即在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++目录→ 包含文件”)),一般使用尖括号进行包含声明,当然使用双引号包含也没有错。

对于在“Tools→ Options→ Directories→ Include files”(“工具→ 选项→ 项目和解决方案→ VC++目录→ 包含文件”)处人工添加的包含路径和附加包含目录下的头文件的包含可以使用尖括号进行包含,但一般使用双引号。

原则上,对于工程或文件可见的包含目录下的头文件包含,使用以上两种包含方式中的任一种都不会出错,主要是它们在搜索目录时的顺序不一样。习惯上使用尖括号包含标准库函数头文件,使用双引号包含用户自定义头文件。建议除标准SDK(如DirectX等),一般针对具体工程使用附加头文件包含即可,尽量不要去动编译器的“Tools→ Options→ Directories→ Include files”(对应VC2005的“工具→ 选项→ 项目和解决方案→ 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的可见性)。

五.生成文件目录设置

VC6.0中:

在“Project Setting→ General→ Output directories”的“Output files”处填写*.exe或*.lib/*.dll的生成目录,相应在“Project Setting→ Link(或Library)→ Output file name”处将会同步文件输出路径。相对目录参考*.dsp文件。

在“Project Setting→ General→ Output directories”的“In termediate files”处填写中间文件生成目录。相对目录参考*.dsp文件。

在“项目属性→ 常规→ 输出目录”处填写输出目录,在“项目属性→ 常规→ 中间目录”处填写中间目录,相对目录参考*.vcproj文件。

在“项目属性→ 链接器(或管理员)→ 常规→ 输出文件”处填写输出文件路径。

输出目录(OutDir)一般为$(SolutionDir)$(ConfigurationName)

输出文件(OutputFile)一般为$(OutDir)/$(ProjectName).exe(*.lib,*.dll)说明:

$(SolutionDir)为*.sln文件所在文件夹,尾带…/?;

$(ProjectDir)为*.vcproj文件所在文件夹,尾带…/?;

$(ConfigurationName)为*.sln的*.vcproj文件所在文件夹下的debug、release

文件夹,参考*.vcproj文件中的配置项。

具体在“项目属性→ 配置属性→ 调试→ 命令”下拉点击“编辑”,展开“宏

(M )>>”,可以看到很多项目内置宏。

一般的配置为:

输出目录(OutDir):$(ProjectDir)$(PlatformName)/$(ConfigurationName)中间目录(IntDir):$(OutDir)/Intermediate

输出文件:$(OutDir)/$(ProjectName).lib(dll、exe)

六.关于相对目录

相对目录是相对某个文件而言的,例如在VC项目属性配置附加包含目录、附加库目录则是相对*.dsp、*.vcproj文件而言的;在某个*.c、*.cpp文件中使用#include包含命令,是相对这个*.c、*.cpp文件而言的。

当前目录是可见的,一般直接引用文件名(夹),对于子文件夹可以添加”./”。

..:父目录

../include:父目录下的include目录

../..:祖父目录

https://www.sodocs.net/doc/853690741.html,/include:祖父目录下的include目录

七.依赖项目联编

一个解决方案(dsw、sln)可以创建很多辅助子项目(dsp、vcproj),如何设置使在编译主项目的时,先编译所依赖的辅助项目呢?

一般会配置辅助子项目的OutDir和主项目相同,这样生成的lib或dll对于主项目exe直接可见。

VC6.0中:

选择菜单“Project→ Dependencies”可以选择需要联编的项目。

在解决方案资源管理器中右击项目名称,选择“引用”或“项目依赖项”菜单,可选择项目依赖项,并可以设置依赖顺序。

八.附加DLL 调试

VC6.0中:

如果你需要调试的DLL是动态装入(LoadLibrary)的,则需要在“Project Setting

→ Debug(Category:Additional DLLs)”处添加这个DLL文件。

九.导出makefile

VC6.0中选择菜单“Project→ Export Makefile”即可导出Makefile文件*.mak。

VC6以后不再支持makefile输出了。

参考:《VC的 MAKE文件的语法》,《vs6 IDE导出的 makefile使用方法》,《教你在 VS2005下写 MakeFile》

十.代码的编辑与阅读导航

Visual Studio本身就带有充分的代码组织、编辑、分析以及阅读能力的支持。

VC6.0和VC2005中的“Edit → Find in Files”支持指定项目、工程或文件内的关键字搜索。

VC6.0的“Tools → Source Browser”,提供对“Definitions and References”、“File Outline”、“Base Classes and Members”、“Derived Classes and Members”、“Call Graph”、“Callers Graph”等导航功能支持。

VC2005右键快捷菜单中支持“查找所有引用”;右键快捷菜单中的“调用浏览器”支持函数调用关系图和被调用关系图的查看。“类视图设置”中支持显示“基类型”、“派生类型”、“继承成员”等功能。

此外,在阅读代码时,我们可以使用书签(Bookmark)来设置锚点,这样就可以实现基于书签的自定义索引导航。

下面介绍常用的编程辅助插件软件及源代码层次结构分析工具软件。

1.Visual Assist X是一款非常好的Microsoft Visual Studio辅助插件,支持C/C ++,C#,ASP,Visual Basic,Java和HTML等语言,能自动识别各种关键字、系统函数、成员变量、自动给出输入提示、自动更正大小写错误、自动标示错误等,有助于提高开发过程的自动化和开发效率。

2.Windows下的Source Insight是一个面向项目开发的程序编辑器和代码导航浏览器,它还能显示reference trees,class inheritancediagrams和call trees。相应的Linux 下阅读源代码的利器Source Navigator能很好地解决文件定位和跳转问题。

3.Rational Rose是利用UML(统一建模语言)进行分析和设计面向对象软件系统的强大的可视化工具,可以进行项目需求分析、结构规划和生成框架代码,还可以支持从现有系统逆向转出工程代码,生成Rose模型的功能。

逆向工程(Reverse Engineer)就是从现有系统的代码来生成模型的功能。通过Rational Rose 分析已有的代码,可了解代码结构和数据结构,生成类层次关系图、数据模型图和组件图。

十一. VC6 常用快捷键

Alt+F7:Project Settings

Ctrl+J/K:寻找上一个/下一个预编译条件

Ctrl+Shift+J/K:寻找上一个/下一个预编译条件并将这一块选定

Ctrl+Tab:当前打开文档和上一次打开文档切换。

Alt+O:头文件与cpp文件的交互显示

F12:Goto definition

Shift+F12:Goto reference

Ctrl+Home:文档头

Ctrl+Shift+Home:选定从当前位置到文档头

Ctrl+End:文档尾

Ctrl+Shift+End:选定从当前位置到文档尾

Alt+F8:自动格式重排

Ctrl+F4:关闭当前文档

Ctrl+Z/Alt+Backspace:Undo

Ctrl+Shift+Z/Ctrl+Y:Redo

Ctrl+B/Alt+F9:编辑断点

Ctrl+Shift+F9:去掉所有断点

Ctrl+D:定位工具条查找输入栏

Alt+F3/Ctrl+F:当前文档查找

Ctrl+F3:查找下一个

Ctrl+Shift+F3:查找上一个

Ctrl+H:替换

Ctrl+]:括号匹配

Ctrl+↑:向上滚屏

Ctrl+↓:向下滚屏

Ctrl+←:移到前一个单词

Ctrl+→:移到后一个单词

Ctrl+Shift+←:选定当前位置到前一个单词

Ctrl+Shift+→:选定当前位置到后一个单词

Ctrl+Backspace:删除当前单词的前半截(以光标为分割)

Ctrl+Del:删除当前单词的后半截(以光标为分割)

Ctrl+L:剪切当前行

Ctrl+Shift+L:删除当前行

F2:上一个书签

Shift+F2:上一个书签

Alt+F2:编辑书签

Ctrl+F2:添加/删除一个书签

Ctrl+Shift+F2:清除所有书签

参考:

《VC的环境设置》

《VC6.0工程设置介绍》

《Visual C++ 6.0环境配置》

《VC 2005 解决方案的目录结构设置和管理》

《Managing Solutions, Projects, and Files》

《File Types Created for Visual C++ Projects》版权声明:本文为博主原创文章,未经博主允许不得转载。

?上一篇键盘消息处理

?下一篇Array osgRecipes

主题推荐

c语言visual studio 2010库调试

猜你在找

Windows Server 2012 Hyper-v 管理

SpringMVC Spring MyBatis整合

Windows Server 2012 R2 Hyper-V 管理

Windows Server 2012 组策略管理

Windows Server 2012 R2 远程桌面管理

查看评论

1楼tunpishuang 2014-10-22 11:09发表[回复]

总结得很好。感谢。

您还没有登录,请[登录]或[注册]

* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

核心技术类目

全部主题Hadoop AWS移动游戏Java Android iOS Swift智能硬件Docker OpenStack VPN Spark ERP IE10Eclipse CRM JavaScript数据库Ubuntu NFC WAP jQuery BI HTML5Spring https://www.sodocs.net/doc/853690741.html, API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components

Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算iOS6Rackspace Web App SpringSide Maemo Compuware大数据aptech Perl

Tornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala

Django Bootstrap

个人资料

whucv

o访问:471540次

o积分:7527

o等级:

o排名:第1316名

文章分类

?VC/MFC/Windows编程(31)

?算法与性能优化(4)

?计算机视觉/数字图像处理/计算机图形学(25) ?编程规范及心得(4)

?翻译(4)

?Web(8)

?数据库(3)

?Linux(4)

?数学建模与数学语言(Matlab/Lingo/IDL/R)(16) ?杂(4)

?OpenGL(29)

?Xtreme Toolkit Pro 用户手册(8)

?系统控制与注册表(4)

?界面编程与GUI设计(12)

?数据可视化(3)

?Latex(24)

?OSG/osgEarth(21) ?C#(13)

?DevExpress(19) ?Aspose(1)

?遥感(7)

?概念解释(0)

?Android(2)

?搜索引擎(3)

?一个解决方案(1) ?腾讯地图(2)

?Games(1)

?3rdParty(2)

?WPF(1)

文章存档

?2015年08月(2) ?2015年07月(1) ?2015年02月(2) ?2015年01月(1) ?2014年12月(14) ?2014年10月(4) ?2014年07月(14) ?2014年06月(8) ?2014年05月(1) ?2014年04月(4) ?2014年03月(1) ?2014年01月(10) ?2013年12月(1)

?2013年11月(3) ?2013年10月(1) ?2013年09月(8) ?2013年08月(21) ?2013年07月(4) ?2013年06月(6) ?2013年05月(1) ?2013年04月(2) ?2013年03月(2) ?2013年02月(1) ?2013年01月(15) ?2012年12月(8) ?2012年11月(17) ?2012年10月(7) ?2012年09月(41) ?2012年08月(33) ?2012年07月(32) ?2012年06月(22) ?2012年05月(7) ?2012年04月(21) ?2012年03月(32) ?2012年02月(12) ?2012年01月(3) ?2011年11月(3) ?2011年09月(2) ?2011年08月(9)

展开

阅读排行

?[面试] 步步为营:吉大学士的P&G宝洁面经(13152)

?焦距与视角的关系(12299)

?Latex入门CTeX_2.9.2.163 WinEdt7.0第一课编译(10128)

?VC新建目录CreateDirectory、得到exe存放路径GetModuleFileName、获取当前目录GetCurrentDirectory、CFileDialog设置打开默认路径(7308)

?VS2010 C++环境下DLL和LIB文件目录及名称修改(6700)

?Latex输出行列式、矩阵、方程组(5133)

?XeLaTeX+xeCJK中文字体设置(5055)

?瑞利(Rayleigh)商定义及其求特征值法(4997)

?LaTeX定义新命令(4559)

?osgEarth Step By Step①我的第一个osgEarth程序(4492)

评论排行

?Archie osgEarth Step By Step ⑤OsgEarth开发指南——使用osgearth API编程动态建立地图

(5)

?PCL(PointCloudLibrary)(4)

?CHtmlView填充表单和模拟单击事件(4)

?DevExpress之ChartControl(4)

?LaTeX :Step By Step (1)运行LaTeX(4)

?MFC树形控件和静态切分视图结合程序(4)

?Archie OSG Step By Step③OSG+VS2010+MFC单文档程序框架构建(4)

?gluLookAt和gluPerspective关系——学习OpenGL三维建模前必读④(3)

?ucinet数据集格式(3)

?线程进程函数调用对话框Updatedata错误(3)

推荐文章

o* 最老程序员创业开发实训4--IOS平台下MVC架构

o* Android基础入门教程--6.1 数据存储与访问之--文件存储读写

o* 聊天界面的制作(三)--表情列表发送功能

o* Linux下编程--文件与IO(三)文件共享和fcntl函数

o* Windows 多进程通信API总结

o* libuv里的几个缺陷

最新评论

相关主题