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),这就是宏了,可以点开右下角的宏查看这些分别代表什么字符串。
_files\20170210165407940_1_.png)
_files\WZ_VC++的目录(引用目录).mht!cid-34823921.png)
简单来说这玩意是微软自己意淫的,它不是C++标准!!!——你可以选择无视之
从MSDN的文章中可以看到,它需要C++编译器开启特定的编译模式(使用命令行"/clr")使得编译出的DLL文件内部附加具有__declspec(thread)的导入语义元信息(此外lib静态库/导入库也具备这种扩展编译功能)
之后就是说你的主项目如果要使用这个DLL,先用#using这种预处理关键字导入这个DLL,而后你就不用额外搞声明了,里边的DLL函数就直接可以使用。。。
其实你查WZ_VC中的目录宏.mht会发现$(VC_ReferencesPath_x86);这个东西_files\WZ_VC++的目录(引用目录).mht!cid-34997921.png)
它和库文件的路径是完全一样的,到这其实真相已经明了。。。