一般在使用开源代码,比如boost或者是自己写的dll的时候,用包含目录,库目录会很方便。
如果需要加载dll,那么就需要在录目录下加上dll的路径,好处是可以省掉复制粘贴或者别的麻烦,直接使用dll,那么在使用dll的时候,一般都会有头文件暴露出来dll中所包含的文件,那么包含目录即需要将这些头文件的目录加进来,这样才可以找到头文件,从而调用到其中的函数。
比如你写的是一个win32的控制程序,且调用了别的dll,那么在运行的时候,它可能会提醒说
缺少某某dll,那么就需要在环境这个变量这里加上需要的dll的路径,一般的格式为path = $(path);$(SRC_BOOST);
下面在说一下环境变量,环境变量其实就是一些个可以理解为是c中的宏的一个东西,只不过这个是操作系统下定义的,
环境变量的设置方式
好处是如果此程序与别人共享,那么使用环境变量比较方便,只要让别人也定义这么个变量即可,至于变量的内容当然是因人而异,因机器而异了。
加载dll的方式包括动态和静态两种方式。
静态的话就是直接包含dll,lib文件来的。
动态的话,可以这样
hdll = LoadLibrary(“dll名称”);
先使用此方法将dll文件读进来,返回一个句柄,需要判空,如果是空,需要调用FreeLibrary(hdll )释放;
然后如果要使用其中的某一个函数需要这样
GetProcAddress();需要使用这个函数来获取一个函数指针,其实也就是函数的地址来调用它。
使用方式FUN = (fun)GetProcAddress(hdll , “fun”);
_fn_set_stop_restrainswitch = (FN_SetStopRestrainSwitch)GetProcAddress(_hmod,"SendCmdForSetStopRestrainSwitch");
FN_SetStopRestrainSwitch为函数指针,_fn_set_stop_restrainswitch 为此函数指针变量
FUN是一个函数指针,引号内的为函数名称,在调用的时候使用FUN(参数列表)即可调到fun()函数
注意,当然每次操作之后都需要判空,如果是空,需要FreeLibrary(hdll)释放掉指针,最后使用结束也是一样的。