学习动态链接库前参考了这两个链接:
http://blog.sina.com.cn/s/blog_7939cf980102v052.html
http://www.cnblogs.com/lhbssc/archive/2012/02/08/2342853.html
第一个简单的动态链接库封装的是冒泡排序法
环境:VS2010
1、封装动态链接库
首先打开VS2010新建一个win32项目(这里命名为maopao),应用程序类型选择DLL,直接点击完成即可。
//maopao.cpp
#include "stdafx.h"
//关键在于加入这一句,意为将C语言下的程序导出为DLL
extern "C"_declspec(dllexport) void maopao(int *p,int count);
void maopao(int *p,int count)
{
int temp=0;
for(int i=1;i<count;i++)
{
for(int j=count-1;j>=i;j--)
{
if(p[j]>p[j-1])
{
temp=p[j];
p[j]=p[j-1];
p[j-1]=temp;
}
}
}
}
编译运行,即可在Debug目录下生成maopao.lib和maopao.dll
至此冒泡排序的动态链接库创建完毕。
2、调用动态链接库
接着就要考虑如何调用了
还是VS2010,新建一个控制台应用程序,并把第一步生成的库文件引入到项目中
引入方式:
项目->属性->链接器->常规->附加库目录 加入库目录
项目->属性->链接器->输入->附加依赖项 加入库名称
再者便是直接调用了
啥也不说,上代码
#include<iostream>
#include<time.h>
using namespace std;
//将export改为import即导出变导入即可
extern "C"_declspec(dllimport) void maopao(int *p,int count);
int main()
{
int a[10];
srand(time(0));
for(int i=0;i<10;i++)
a[i]=rand()%50;
maopao(a,10);
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
getchar();//为方便调试
return 0;
}
输出结果如下,为十个随机数排序后结果
DLL包括动态和静态两种,大型应用程序中一般使用动态链接库
本文用到的DLL同样没涉及静态知识
相信以后还会有机会接触