MFC加载动态链接库方法


1、LoadDll.cpp

 1 #include "StdAfx.h"
 2 #include "LoadDLL.h"
 3 
 4 pMFCCallBackDll DLL_MFCCallBackDll;  5 
 6 HINSTANCE    g_Hinstance;    //实例句柄  7 
 8 //加载DLL
 9 BOOL LoadDll(char *name) 10 { 11     //char name[200] = {""}; //DLL名字存放,且,最大长度为50 /*------------这里-----------------*/ 12     //g_Hinstance = LoadLibrary(name);
13     if(g_Hinstance != NULL) return TRUE;    //如果g_Hinstance不为空就返回 14 
15     //name = {""}; 16     //memset(name, 0, sizeof(char)*200); //清空数组 /*------------这里-----------------*/ 17     //g_Hinstance = LoadLibrary(name);
18     DLL_MFCCallBackDll = NULL; 19 
20     //sprintf(name,"C://Users//Administrator//Desktop//ZJDLLV1.0.3.dll");/*------------这里-----------------*/
21     g_Hinstance = LoadLibrary(name); 22     if(g_Hinstance == NULL) 23  { 24         AfxMessageBox("加载dll动态库失败!"); 25         return FALSE; 26  } 27 
28     DLL_MFCCallBackDll = (pMFCCallBackDll)GetProcAddress(g_Hinstance, "ZJY_我的"); 29     if(NULL == DLL_MFCCallBackDll) 30  { 31         AfxMessageBox("加载动态库MFCCallBackDllTest函数失败"); 32  FreeLibrary(g_Hinstance); 33         g_Hinstance = NULL; 34         return FALSE; 35  } 36     return TRUE; 37 } 38 
39 //卸载DLL
40 void QuitDll() 41 { 42     if (g_Hinstance != NULL) 43  { 44         DLL_MFCCallBackDll = NULL; 45  FreeLibrary(g_Hinstance); 46         g_Hinstance = NULL; 47  } 48 }

 

2、LoadDll.h

 1 #ifndef __MFCCLOADDLL_H  2 #define __MFCCLOADDLL_H
 3 
 4 #include <windows.h>
 5 
 6 BOOL LoadDll(char *name);    //加载DLL
 7 void QuitDll(); //卸载DLL
 8 
 9 typedef WORD (WINAPI *pMFCCallBackDll)(WORD a);    //返回cahr *
10 
11 extern pMFCCallBackDll    DLL_MFCCallBackDll;    //外部定义
12 
13 #endif        //__MFCCLOADDLL_H

 

3、调用主界面

 1 // testDllDlg.cpp : 实现文件  2 //  3 
 4 #include "stdafx.h"
 5 #include "testDll.h"
 6 #include "testDllDlg.h"
 7 #include "afxdialogex.h"
 8 #include "LoadDLL.h"
 9 
10 ******
11 ******
12 /*这里是原来默认代码*/
13 ******
14 ******
15 
16 
17 void CtestDllDlg::OnBnClickedOk() 18 { 19     WORD  reslut = DLL_MFCCallBackDll(1); 20 
21     if(reslut == 1) 22  { 23         AfxMessageBox("软件可正常使用!"); 24  } 25     else if(reslut == 0) 26  { 27         AfxMessageBox("软件已过期!"); 28  } 29 }    

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM