如何编写dll文件(dll编写教程)

1. 利用MFC AppWizzed(DLL)向导界面创建一个动态链接库工程,向导中的各个选项不变.

2. 在DLL主程序文件中定义几个函数,供其他程序调用,函数的声明必须有下面的的关键字:

extern "C" TYPE PASCAL EXPORT FunName()

每个函数体的第一句话必须是:

AFX_MANAGE_STATE(AfxGetStaticModuleState());

如下例:

extern "C" int PASCAL EXPORT TestFun()

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

return 8;

}

3. 每个显式调用的动态链接库工程都必须包含一个模块定义文件,即DEF文件,在模块定义文件中必须对外部调用者说明库内函数的名称,书写格式如下:

TestFun @1

如:

; S12.def : Declares the module parameters for the DLL.

LIBRARY "S12"

DESCRIPTION 'S12 Windows Dynamic Link Library'

EXPORTS

; Explicit exports can go here

TestFun @1

如果有多个函数,则编号从@1开始,不要从@0开始.

调用:

显式调用的动态链接库必须使用LoadLibrary()函数装载,因此叫做显式调用.

1. 利MFC AppWizzed(exe)向导界面创建一个普通的project

2. 在实施调用的CPP文件的顶部定义函数指针类型,定义方法:

typedef TYPE (CALLBACK* FUNPOINTER1)(param list);

3. 在调用点声明函数指针,声明方法:

FUNPOINTER1 lpfnDllFunc1;

4. 用LoadLibrary()装载动态链接库.

5. 用GetProcAddress()装载函数,装载方法;

lpfnDllFunc1 = (FUNPOINTER1)GetProcAddress(“TestFun”);

6. 调用装载进来的函数:

lpfnDllFunc1();

如:

BOOL CTestDllApp::TestDll()

{

HINSTANCE hDll;

FUNPOINTER1 lpfnDllFunc1;

FUNPOINTER2 lpfnDllFunc2;

UINT uReturnVal;

hDll = LoadLibrary("E:\\S12.dll");//装载动态连接库

if(hDll != NULL)

{

lpfnDllFunc1 = (FUNPOINTER1)GetProcAddress(hDll,"TestFun");//装载函数

if(!lpfnDllFunc1)

{

FreeLibrary(hDll);

return FALSE;

}

else

{

int n;

n = lpfnDllFunc1();//调用函数

}

}

return TRUE;

}

(0)

相关推荐

  • dll文件怎么打开?打开步骤分享

    导语:我们很多人虽然每天都在使用着电脑,每天都用电脑工作或者学习,但是,小编可以负责任的告诉大家,我们对我们自己的电脑,非常有可能是不熟悉的,甚至其中的一些功能,一些文件的打开方式,我们都是不知道该如 ...

  • 缺少dll文件是怎么回事(电脑缺失各种dll文件是什么原因)

    我们在启动某程序或者某游戏软件的时候提示过dll文件丢失的情况,导致程序运行不了.前段时间就有网友给小编反应启动迅雷的时候提示XLUE.dll文件丢失,导致迅雷打开不了了,那么XLUE.dll是什么文 ...

  • es文件浏览器使用教程(es文件浏览器文件打开方式)

    es文件浏览器怎么授权sd卡首先在SD卡选中要重命名的文件,发起重命名此时系统会提示授予ES文件浏览器读写权限,点击选择接着进入授权界面第一步,如图,点击设置接下来选择*设置接下来就出现手机内存和外置 ...

  • 隐藏的文件怎么显示的教程详解

    如今,电脑和网络都是我们日常生活中不可或缺的一部分.我们可以利用它们进行各种各样的活动.但是,当我们使用电脑的过程中,我们会遇到很多的问题,例如不知道怎样把隐藏的文件夹显示出来,例如C盘系统盘里有很多 ...

  • 怎么样给文件夹加密的教程详解

    如今,电脑的普及范围已经越来越广了,可以说每个家庭都有一台电脑.在电脑方便我们的同时,也带来了隐私的问题.有时候,我们电脑中的一些文件并不想给别人看到.这个时候,我们就可以给我们的文件加密啦,这样子别 ...

  • 如何清理电脑垃圾文件(最强清理方法)

    如何清理电脑垃圾文件,这是一个我们经常在做但做得不完全的事情,一些临时文件.日志文件.索引文件等等,如果我们不定时清理就会堆积在那里,我们知道在网上也有很多清理电脑的教程和软件,下面是小编整理的方法, ...

  • Win10注册表编辑器怎么打开 小白一看就会的图文教程!

    在Windows系统中,注册表是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息.下面请跟小兔一起来看看Win10注册表编辑器打开的方法介绍. 一.Win10注 ...

  • 文件扩展名大全 电脑菜鸟必看

    文件扩展名,对于使用电脑的菜鸟们来说,这或许是个非常陌生的名字.也许很多人都要问,文件名就文件名,为什么还要扩展呢?然而在我们实际应用中就经常会遇到一些这样的现象:电脑中一些莫名其妙的文件总是打不开, ...

  • libs是什么文件夹?可以删除吗

    如今的生活中电脑已经是我们很好的工具,能够在很多的方面帮助到我们.可是在使用电脑方面我们还是有很多不清楚的地方,比如说对于文件的处理和一些文件夹的用处,我们的了解并不是很多.libs是我们使用电脑中一 ...