C++封装动态链接库及调用
学习动态链接库前参考了这两个链接:
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同样没涉及静态知识
相信以后还会有机会接触