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 }