Dll生成与创建

环境:

VC++2008  Win7 32bit

 

 

使用动态链接库具有以下优点:(1)隐藏源代码;(2)实现代码重用;(3)当程序调用DLL中的函数时不需要重新编译,提高编译速度;(4)当多个程序调用同一DLL中函数时,内存中只有一个副本,节省内存空间。

 

 

调用Dll时有2种方式:

运行时动态链接:(显示链接)

   应用程序调用LoadLibrary函数或LoadLibraryEx函数以在运行时加载DLL。成功加载DLL后,可以使用GetProcAddress函数获得要调用的导出的DLL函数的地址。在使用运行时动态链接时,无需使用导入库文件。

 

加载时动态链接:(隐式链接)

    需要.dll .lib .h分别放在程序目录下

a.工程比较小时,可将DLL,H和LIB文件直接复制到当前工程下,不需要添加环境变量。这时在包含对应头文件时应当使用双引号而不是尖括号。

 

b.工程比较大,则可以在本地硬盘的其它位置新建一个文件夹,命名为myDllTest,再新建三个子文件夹bin,include和lib,将DLL文件放到bin中,H文件放到include中,LIB文件放到lib中。然后打开环境变量编辑器(在开始里面直接输入编辑系统环境变量,然后搜索即可)。新建环境变量myLibTest,变量值为myDllTest文件夹所在目录。然后编辑Path环境变量,添加语句%myDllTest%\bin;(不同的语句用;间隔)。

 

 

可以根据下面的 准则来判断使用哪一种链接方式。 

(1)启动性能 如果应用程序的初始启动性能很重要,则应使用运行时动态链接。

(2)易用性 在加载时动态链接中,导出的 DLL 函数类似于本地函数。这使您可以方便地调用这些函数。

(3)应用程序逻辑在运行时动态链接中,应用程序可以分支,以便按照需要加载不同的模块。在开发多语言版本时,这一点很重要。

 

生成:加法函数

新建->项目->VC++->Win32控制台应用程序->应用类型:DLL  附加选项为空-> finlish

 

MyDll.h:

extern "C" _declspec(dllexport) int Sum(int a,int b);//加法函数
MyDll.cpp:
#include "MyDll.h"

int Sum(int a,int b)
{
	return a+b;
}

单击编译后,及可生成DLL文件和Lib文件.

 

创建: 

创建Win32工作台程序,进行隐式链接.

copy 三个文件安装目录.

 

测试代码如下:

#include "stdafx.h"
#include "MyDll.h"
#pragma comment(lib,"DllCreate.lib");
int _tmain(int argc, _TCHAR* argv[])
{
	int c=Sum(3,5);
	printf("a+b=%d",c); 
	getchar();
	return 0;
}

测试通过

 

你可能感兴趣的:(Dll生成)