zoukankan      html  css  js  c++  java
  • DLL调用的两种方式(IDE:VC6.0,C++)

    原文:http://www.cnblogs.com/Pickuper/articles/2050409.html

    DLL调用有两种方式,一种是静态调用,另外一种是动态调用

    (一)静态调用

    静态调用是一种显式的调用方式,即在编程的时候便知道了被调用的DLL中的接口函数,在编译链接的时候将DLL与工程生成的exe相关联。以MyApp.dll为例,具体的操作步骤如下:

    (1)需要的文件有:MyApp.dll,MyApp.lib,MyApp.h

    (2)假设需要调用MyApp.dll的工程为MyTest,首先把MyApp.dll放到MyTest工程目录的Debug或者Release目录下,然后将MyApp.lib和MyApp.h放到MyTest工程目录的根目录下

    (3)用VC打开MyTest工程,选中工程,然后选择VC菜单下的Project->Settings

    (4)在弹出的对话框中选择Link选项卡,然后在Object/library modules输入框中输入MyApp.lib,点击OK

    (5)在工程的FileView下,将MyApp.h文件添加到Header Files目录下

    (6)最后在需要调用DLL中的函数的*.cpp文件中包含#include “MyApp.h”

    (二)动态调用

    动态调用是一种隐式的调用方式,即程序运行过程中装载DLL,然后获取指定函数名称的接口函数,然后再调用之。具体的代码示例如下:

    {

           HINSTANCE hDllInst = LoadLibrary("MyApp.dll");

           if(hDllInst)

           {

                  typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);

                  MYFUNC youFuntionNameAlias = NULL;         // youFuntionNameAlias 函数别名

                  youFuntionNameAlias = (MYFUNC)GetProcAddress(hDllInst,"youFuntionName");           // youFuntionName 在DLL中声明的函数名

                  if(youFuntionNameAlias)

                 {

                        youFuntionNameAlias(param1,param2);

                 }

                 FreeLibrary(hDllInst);

           }

    }

  • 相关阅读:
    设计模式:解释器模式???
    设计模式:访问者模式(Visitor)
    设计模式:享元模式(Flyweight)
    NHibernate
    设计模式:中介者模式(Mediator)
    设计模式:职责链模式(Chain Of Responsibility)
    反射
    设计模式:命令模式(Command)
    设计模式:桥连模式(Bridge)
    设计模式:组合模式(Composite)
  • 原文地址:https://www.cnblogs.com/lizhigang/p/6893988.html
Copyright © 2011-2022 走看看