一.lib库加载方式
方法1: 通过设置工程配置来添加lib库.
A、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。
B、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。
C、 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。
这种方法比较繁琐,且不直观,而且还可能要争对debug版本和release版本作不同的配置,因为我们生成的两个版本的库可能放在不同的目录中的.
方法2: 使用编译语句:
#ifdef _DEBUG
#pragma comment(lib,"..\\debug\\LedCtrlBoard.lib")
#else
#pragma comment(lib,"..\\release\\LedCtrlBoard.lib")
#endif
这种方法直观,方便,且可以按如上直接区分出Debug版本和Release版本的不同目录.当然,通过宏,还可以区分更多版本.
但是在指定目录时,不小心容易出错.
方法3: 直接添加库文件到工程中.
就像你添加.h和.cpp文件一样,把lib文件添加到工程文件列表中去.
VC中,切换到"解决方案视图",--->选中要添加lib的工程-->点击右键-->"添加"-->"现有项"-->选择lib文件-->确定.
就是这么简单,搞定.
这个方法适用于在我的工程的debug版本和Release版本中都使用同一个lib库文件时.这样就省去了你1方法配置环境的繁琐,也省去了方法2种语句的可能性错误发生.
二.动态库加载方法
方法一:代码加载方法:
LoadLibrary
GetProcAddress
FreeLibrary
示例:
#include <stdio.h>
#include <Windows.h>
#pragma comment(lib, "DllLoad.lib")
int main()
{
HINSTANCE h = LoadLibraryA("DllLoad.dll");
typedef int(*FunPtr)(int a, int b);//定义函数指针
if (h == NULL)
{
FreeLibrary(h);
printf("load lib error\n");
}
else
{
FunPtr funPtr = (FunPtr)GetProcAddress(h, "add");
if (funPtr != NULL)
{
int result = funPtr(8, 3);
printf("8 + 3 =%d\n", result);
}
else
{
printf("get process error\n");
printf("%d", GetLastError());
}
FreeLibrary(h);
}
return 0;
}
方法二:把dll复制到工程的可执行文件(exe)所在的目录下,例如在Debug下编译,就复制到Debug目录下。
方法三:在系统的环境变量中添加该dll的路径。
方法四:添加项目调试环境中,项目->属性->调试->环境:输入path=包含dll文件的文件夹路径。
三.头文件
方法一:如果include中的文件比较少,直接把include文件中的(.h)文件复制到项目中,然后直接导入到项目中。
方法二:如果include中的文件比较多,项目->属性->VC++目录->包含目录,添加上include文件夹的地址。