动态链接库的调用方式有两种,一种是静态调用,一种是动态调用。静态调用dll比较简单,将.dll,.h,.lib放在工程下,在工程里使用下列格式包含,就可以直接使用了。
#pragma comment(lib,"XXX")
而动态调用dll就有些复杂了,但动态调用仅需要dll文件就可以,不需要包含上述lib。调用之前需要构造一个函数类型,比如我需要调用VCI_StartCAN函数,它在.h里的声明如下
extern "C" DWORD __stdcall VCI_StartCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
那么构造的类型就是这样的:
typedef DWORD(__stdcall *lpFun3)(DWORD, DWORD, DWORD);
如此,就可以开心的进行调用了。
HINSTANCE hDll;//定义个DLL句柄,可以定义为全局变量,这样其他函数需要调用dll时不需要再次加载dll了
hDll=LoadLibrary("ControlCAN.dll");//动态加载dll,这里假设你的dll放在你要调用它的工程的debug下
if(hDll==NULL){return 0;}
//---------------标记1-----------------------------------