DLL导出函数的声明和调用

DLL导出函数的声明和调用

声明导出函数:
    DLL内的函数分两种:只在DLL内部调用的、DLL导出函数——供应用程序调用
    声明导出函数两种方法:
(1)在函数声明中加上extern"C" int _declspec(dllexport)add(int x,int y);//一定要加上extern "C"
(2)采用模块定义(.def)文件声明。.def文件为链接器提供了有关被链接程序的导出、属性和其他信息。
MFC AppWizard为MFC DLL创建一个.def文件,而Win32 DLL,用户必须自己创建.def文件。
.def定义示例代码如下:
;dll.def:导出DLL函数
LIBRARY dllTest
DESCRIPTION "math"
EXPORTS
  GlobleVar DATA
  add @1
  sub @2
.def文件的规则为:
(1)LIBRARY语句指出DLL的名字
(2)EXPORTS语句后列出一系列函数名称。可以在导出函数后加@n,表示函数序号。
(3);表示注释,且注释不能和语句共享一行。
(4)可选部分——DESCRIPTION语句,原来描述DLL的用途。
(5)变量名 DATA:导出全局变量

DLL的调用(加载)方式:
(1)动态调用(显式链接)
     LoadLibrary()
     GetProcAddress()
     FreeLibrary()
(2)静态调用(隐式链接)
     由编译系统完成对DLL的加载和应用程序结束时对DLL的卸载。需要做两个工作:
a:将编译dll工程所得的.lib和.dll文件放入调用dll工程所在的路径。
   包含.lib文件:#pragma comment(lib,"dllTest.lib")
               or project->setting->link->...
b:声明导入函数,extern "C" int _declspec(dllimport) add(int x,int y)中的_declspec(dllimport)//must add extern "C" 

展开阅读全文

没有更多推荐了,返回首页