转载:DLL调用的两种方式(IDE:VC6.0,C++)

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


转载: https://www.cnblogs.com/Pickuper/articles/2050409.html

(一)静态调用

静态调用是一种显式的调用方式,即在编程的时候便知道了被调用的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);
       }
}

猜你喜欢

转载自blog.csdn.net/aboklh/article/details/86605897