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同樣沒涉及靜態知識
相信以后還會有機會接觸