动态调用DLL

    技术2022-05-11  70

    有静态和动态两种,静态的需要lib而动态的只需要一个dll就可以了(但是要知道函数的定义一般是头文件)动态相对复杂一点!但是掌握了也不是很难     //第一步     定义函数指针就是你要调用的函数,参数必须一致,不然就内存泄露     typedef   HANDLE (PASCAL   *   OPEN)(char   *,int);     //第二步     定义本地函数     //一般前两步都在头文件里面声明     OPEN       open;     //第三步   加载dll     HMODULE   m_hLib;     m_hLib     ::LoadLibrary"E://yewufuwu//TERMINALDLL//Debug//TerminalDLL.dll");     //输入相应的路径     if(m_hLib   ==   NULL   )     {           MessageBox("动态连接库没有找到!!!","LoadLibrary",MB_OK);         return   ;     }     //第四步     else     {           MessageBox("动态连接库成功打开...","LoadLibrary",MB_OK);           open=(OPEN)GetProcAddress(m_hLib,   "OpenDevice");     }         //第五步     long     handle   =open("EF",1);                 动态库下的函数如下     //*************打开终端*****************************************     HANDLE   __declspec(dllexport)     WINAPI     OpenDevice(char   *   szType,int   nType)     {         hReader=theTerminal.OpenReader(szType,0);     if(hReader==0)     return   0;     DWORD   ThreadID=0;             return   hReader;     }     

    最新回复(0)