C++之動態鏈接庫的封裝與使用


 

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;

            }

        }

      }

}
View Code

 

 

編譯運行,即可在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;

}
View Code

 

 

輸出結果如下,為十個隨機數排序后結果

 

 DLL包括動態和靜態兩種,大型應用程序中一般使用動態鏈接庫

本文用到的DLL同樣沒涉及靜態知識

相信以后還會有機會接觸


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM