包含目录、库目录、附加包含目录、附加库目录、附加依赖项之详解

VS项目中的包含目录、库目录、附加包含目录、附加库目录、附加依赖项均在"项目->属性->配置属性"下进行配置,具体说明如下:


VC++目录:

    包含目录:寻找#include<xxxx.h>中的xxxx.h的搜索目录

    库目录:寻找.lib文件的搜索目录

C/C++:

    常规->附加包含目录:寻找#include<xxxx.h>中的xxxx.h的搜索目录(每一项对应一个文件夹XXXX,文件夹中包含了编译时所需的头文件,使用时直接#include<XXXX>即可)

链接器:

    常规->附加库目录:寻找.lib文件的搜索目录

    输入->附加依赖项:lib库本身的文件名(在编译之后,*.cpp,*.cc,*.c所生成的.obj多个文件会被打包成一个.lib文件,这样可以保护源代码)


常见问题:

1.包含目录和附加包含目录(库目录和附加库目录)的区别:

    包含目录:修改了系统的include宏的值,是全局的;

    附加包含目录:用于当前项目,对其他项目没有影响。

    (库目录和附加库目录的区别同上)

2.可知包含目录和附加包含目录(库目录和附加库目录)的区别主要在于全局还是当前,那么当需要对某工程添加这些目录时,通常情况下,都是在附加包含目录和附加库目录中添加的。

3. 要使用一个库,除了要include其头文件以外(附加包含目录),还要在链接过程中把lib加进去(附加库目录、附加依赖项)。

4.添加方法:

    附加包含目录---添加工程的头文件目录:

      项目->属性->配置属性->C/C++->常规->附加包含目录:加上头文件的存放目录;

    附加库目录---添加文件引用的lib静态库路径:

      项目->属性->配置属性->链接器->常规->附加库目录:加上lib文件的存放目录;

    附加依赖项---添加工程引用的lib文件名:

      项目->属性->配置属性->链接器->输入->附加依赖项:加上lib文件名。

5.当需要向项目中添加.dll动态链接库时,直接将需要添加的.dll文件拖拽到项目生成的.exe所在的文件夹下即可(项目->属性->配置属性->常规->输出目录,可以看到.exe生成在哪个目录下)。

6.在添加上述几个目录的路径的时候,可以看到$(xxxx),这就是宏了,可以点开右下角的宏查看这些分别代表什么字符串。




 
 

 
[还有个引用目录]

MSDN:ms-xhelp:///?method=page&id=870B15E5-F361-40A8-BA1C-C57D75C8809A&locale=zh-CN&vendor=Microsoft&format=html&topicversion=140&topiclocale=EN-US


简单来说这玩意是微软自己意淫的,它不是C++标准!!!——你可以选择无视之

 

从MSDN的文章中可以看到,它需要C++编译器开启特定的编译模式(使用命令行"/clr")使得编译出的DLL文件内部附加具有__declspec(thread)的导入语义元信息(此外lib静态库/导入库也具备这种扩展编译功能)

之后就是说你的主项目如果要使用这个DLL,先用#using这种预处理关键字导入这个DLL,而后你就不用额外搞声明了,里边的DLL函数就直接可以使用。。。

其实你查WZ_VC中的目录宏.mht会发现$(VC_ReferencesPath_x86);这个东西

它和库文件的路径是完全一样的,到这其实真相已经明了。。。