INCLUDE+LIB设置是一个不错的方法,但是有时候为了保证代码的可以移植需要设置相对路径。
要了解vc中使用#include命令包含头文件所搜寻的路径,必须先了解vc中的几种路径:
1. 系统路径
系统路径在vc中是"Tools->Options->Directories"中"Include files"指定的路径。
打开此对话框会发现默认有这几条路径:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
我们可以在这里添加,这样我们自己添加的路径也会成为系统路径。添加的格式必须按照上面来写。
2. 当前路径
当前路径是指vc工程中工程文件所在的路径,即.dsw文件所在路径。
网上有很多朋友说,当前路径是指.cpp文件所在路径,经过测试,这个说法也是正确的。但是使用vc编译时,是不正确的。
3. 附加路径
附加路径是指在"Project->Settings->C/C++->Preprocessor->Additional include directories "中指定的路径。
此路径默认为空,我们可以在此处填写需要路径,比如:在此处填入"C:\123\",(不要引号),那么附加路径就会变成"C:\123\" 。
上面的1,3路径,我们均可以自己编辑。在编辑过程中,可以使用绝对路径,也可以使用相对路径。
比如,在添加系统路径时,可以这样填写:
.\SRC\ 这样写表示,当前目录中的SRC文件夹;
..\SRC\ 这样写表示,当前目录的上一层目录中SRC文件夹;
...\SRC\ 这样写表示,当前目录下 ..\SRC\\ 路径,当然这种写法已经和第一种重叠了。
这种相对路径的写法,vc会自动帮我们转化为绝对路径。
在添加附加路径时,其相对路径的写法和系统路径是一致的。
在vc中使用#include 命令,有三种形式:
1. #include <file.h>
vc执行这条指令时,它会在系统目录中去查找 file.h 文件。
在此条码命令中,vc不会去当前路径和附加路径中查找文件。
2. #include "file.h"
vc执行这条指令时,它首先会搜索附加路径,如果没有则会搜索系统路径,如果还没有则会去搜索当前路径。
3. #include "directory\file.h"
vc执行这条指令时,它会去指定的路径去查找文件,如果没找到,它不会继续查找。
Visual C++ 概念:生成 C/C++ 程序
模块定义 (.def) 文件
模块定义 (.def) 文件为链接器提供有关被链接程序的导出、属性及其他方面的信息。生成 DLL 时,.def 文件最有用。由于存在可代替模块定义语句使用的链接器选项,通常不需要 .def 文件。也可以将 __declspec(dllexport) 用作指定导出函数的手段。
在链接器阶段可以使用 /DEF(指定模块定义文件)链接器选项调用 .def 文件。
如果生成的 .exe 文件没有导出,使用 .def 文件将使输出文件较大并降低加载速度。
有关更多信息,请参见下列章节:
*
模块定义语句的规则
*
EXPORTS
*
HEAPSIZE
*
LIBRARY
*
NAME
*
SECTIONS
*
STACKSIZE
*
STUB
*
VERSION
*
保留字
请参见
参考
链接器选项
有关生成的常见问题
其他资源
C/C++ 生成参考
;
; AIDemo_CPP.def
; 该文件定义了DLL要导出的函数接口名
LIBRARY "AIDemo_CPP"
EXPORTS
AI_Create @1
AI_Destroy @2
AI_Init @3
AI_SetDepth @4
AI_SetTimeLimit @5
AI_PlaceChessman @6
AI_Play @7
AI_IsFull @8
AI_IsWin @9
AI_QuerySituation @10
AI_QueryAuthorInfo @11
AI_QueryAIInfo @12
; Ok, over