首先要理解以下概念:
*.obj:是c/c++对应的二进制代码格式,是未经重定位的;
*.lib:是若干个obj的集合,本质与obj相同;
*.dll:是可实际运行的二进制代码,重定位的代码;
*.h:是c/c++头文件,当#include时会把包含的文件的内容在c/c++源文件中展开。
(一) 静态调用如下:
1)xxx.dll拷到工程目录(不是解决方案目录,是和Debug和Release平级的目录)下;
2)把xxx.lib拷到工程目录下;
3)把xxx.h拷到工程目录下;
4)依次项目->属性->配置属性->链接器->输入,在附加依赖项中输入xxx.lib;
5)在工程的xxx.c或者xxx.cpp文件中引入xxx.h 就OK了。
(二)动态调用如下:
1)xxx.dll拷到工程目录(不是解决方案目录,是和Debug和Release平级的目录)下;
2)在c/c++源文件中添加include <windows.h>
{
HINSTANCE myLib = LoadLibrary("xxx.dll");
if(myLib)
{
typedef int (*Fun)(int,int);//参数与返回值都为int类型
MYFUNC funcAlias = NULL; // 函数别名
funcAlias= (Fun)GetProcAddress(myLib,"funcName");//funcName是DLL中声明的函数名
if(funcAlias)
{
funcAlias(param1,param2);
}
FreeLibrary(myLib);
}
}