五,动态库(dll)的封装与使用

在项目开发中,我们经常会使用到动态库(dll),要么是使用别人的动态库,要么是将功能函数封装为动态库给别人用。那么如何封装和使用动态库呢?以下内容为你讲解。

1.动态库的封装

以vs2010为例,我们在创建项目的时候,首先选择win32控制台项目,然后在应用程序设置中选择DLL.如下图:

选择win32控制台项目

选择DLL

然后新建一个头文件,这里取名为 mydll.h,添加如下代码:

#ifndef __MYDLL_H
#define __MYDLL_H
#define DLL_API extern "C" _declspec (dllimport)

DLL_API int add(int a,int b);  

#endif 

新建源文件,取名为mydll.c,添加如下代码

#include <stdio.h>
#define DLL_API extern "C" _declspec(dllexport)  //注意,这里是export
int add(int a,int b) //api函数
{
    return a+b;
}

编译工程,在debug或者release文件夹下会生成*.dll和*.lib文件。至此,动态库封装完成。

2.动态库的使用

将动态库中的*.dll文件,*.lib文件还有*.h文件拷贝至项目工程的主函数文件所在目录下,引用 动态库头文件 并在代码中写上如下 声明

#pragma  comment (lib,"mydll.lib")

该行代码将dll导入到 项目工程中,然后我们就可以调用dll里的函数了。

测试代码如下:

#include "stdio.h"
#include "mydll.h" //引用动态库头文件
#pragma  comment (lib,"Dll1.lib") //导入动态库

int main(int argc, int* argv[])
{
    int a = 10;
    int b = 20;
	printf("a+b = %d\n",add(a,b));
    system("pause");
    return 0;
}

这里需要注意一个问题

在dll中申请的内存,也要在dll中释放

posted @ 2018-08-01 15:36  _天行健  阅读(8692)  评论(0编辑  收藏  举报