zoukankan      html  css  js  c++  java
  • 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 }    
  • 相关阅读:
    servlet中doGet()和doPost()的区别
    Hibernate 的getHibernateTemplate()方法使用
    c3p0 数据库连接池
    java 事务处理的概念
    hibernate 关联映射
    java 迭代器
    struts 值桟问题
    struts 属性驱动与模型驱动
    java 单例模式
    XML Node和Element
  • 原文地址:https://www.cnblogs.com/ZHENGJUNupperclassman/p/7488842.html
Copyright © 2011-2022 走看看