12.2 DLL的创建

特殊说明:版权归个人所有,请勿转载,谢谢合作。

DLL的创建过程非常简单,以实现计算器的加、减、乘和除的功能为例,只提供算法部分。

在VC6中,点击【File】菜单中的【New…】项,在弹出的新建界面中,选择【Win32 Dynamic-Link Library】项,并输入项目名称(以“Calc为例”),点击【OK】按钮确认操作,如图12.1所示。

  • 图12.1 DLL新建界面

在向导的第一步,选择【A simple DLL project.】项,创建一个简单的DLL项目内容,并点击【Finish】按钮确认选择,如图12.2所示。

  • 图12.2 DLL创建模式选择

工程创建完成后,系统会自动生成入口函数,如图12.3所示。

  • 图12.3 DLL创建完成

 

在入口函数下面直接实现计算器算法函数,如下所示。

// Calc.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
           )
{
    return TRUE;
}

//-----------------------------------------------------------------------------
//	FUNC	:	加法
//-----------------------------------------------------------------------------
//	INPUT	:	nOp1,操作数1;
//				nOp2,操作数2。
//	OUTPUT	:	NULL
//	RETURN	:	VOID
//	AUTHOR	:	2012-8-7 14:45 Create by lixinghua for functions.
//	NOTE	:	实现加法操作。
//-----------------------------------------------------------------------------
//
int MyAdd(int nOp1, int nOp2)
{
  return nOp1 + nOp2;
}

//-----------------------------------------------------------------------------
//	FUNC	:	减法
//-----------------------------------------------------------------------------
//	INPUT	:	nOp1,操作数1;
//			nOp2,操作数2。
//	OUTPUT	:	NULL
//	RETURN	:	VOID
//	AUTHOR	:	2012-8-7 14:46 Create by lixinghua for functions.
//	NOTE	:	实现减法操作。
//-----------------------------------------------------------------------------
//
int MyDec(int nOp1, int nOp2)
{
  return nOp1 - nOp2;
}

//-----------------------------------------------------------------------------
//	FUNC	:	乘法
//-----------------------------------------------------------------------------
//	INPUT	:	nOp1,操作数1;
//			nOp2,操作数2。
//	OUTPUT	:	NULL
//	RETURN	:	VOID
//	AUTHOR	:	2012-8-7 14:46 Create by lixinghua for functions.
//	NOTE	:	实现乘法操作。
//-----------------------------------------------------------------------------
//
int MyMul(int nOp1, int nOp2)
{
  return nOp1 * nOp2;
}

//-----------------------------------------------------------------------------
//	FUNC	:	除法
//-----------------------------------------------------------------------------
//	INPUT	:	nOp1,操作数1;
//			nOp2,操作数2。
//	OUTPUT	:	NULL
//	RETURN	:	VOID
//	AUTHOR	:	2012-8-7 14:46 Create by lixinghua for functions.
//	NOTE	:	实现除法操作。
//-----------------------------------------------------------------------------
//
int MyDiv(int nOp1, int nOp2)
{
  return nOp1 / nOp2;
}

 

到目前为止,需要简单的计算器算法已经实现,但不能直接使用,需要创建DEF文件作为DLL文件的对外接口声明。点击【File】菜单,以【New…】项,在新建窗口中选择【Text File】项,并在【File】处输入文件名(以DllExoprt.DEF为例),需要注意的是建立的文件需要加入扩展名“.DEF”,如图12.4所示。

  • 图12.4 创建DEF文件

 

创建完DEF文件后,需要在文件加入引出的函数接口,如图12.5所示。

  • 图12.5 DEF导出接口声明

 

此时重新编译程序,编译完成后,可以使用VC6自带的工具,查看导出的函数接口名称,在【开始】菜单中的【所有程序】中查找VC6的安装菜单项,选择VC6的工具【Microsoft Visual Studio 6.0 Tools】中的【Depends】,如图12.6所示。

  • 图12.6 打开Depends工具

 

在Depends工具中打开在Debug目录下生成的动态库文件(本例为“Calc.dll”),即可以查看到相应的接口,如图12.7所示。

  • 图12.7 导出接口

到目前为止,一个动态库创建完成。虽然只实现了简单的加、减、乘和除的操作,但所有动态库的创建方法基本相同,唯一不同的就是更换里面实现具体的功能的函数。在DLL中,本例不需要额外开辟或释放空间,所以入口函数不需要做任何操作。虽然入口函数没有用到,但不能删除,它毕竟是入口与出口的地方,没有了它DLL将是不成立的。

 

转载请附上原文出处链接及本声明
李老师的博客 » 12.2 DLL的创建

发表评论

提供最优质的文章集合

立即查看 了解详情