codeblocks創建和使用靜態庫(C語言)


靜態庫  (擴展名為 .a 或 .lib) 是包含函數的文件,用於在link階段整合執行程序,動態鏈接庫(擴展名  .dll)是不在link階段整合進執行程序中的。

DLL文件在執行階段動態調用

下面我們將用免費的開發工具CodeBocks開發靜態庫

創建靜態庫

啟動Codeblocks並創建一個類型為 "Static Library" (File/New/Project/Static Library/Go)的項目。

 

給項目取一個名字("malibrairie" for instance ), 並分配一個目標目錄("C:/essai" for instance )

 

刪除main.cpp文件中的默認內容。按照下面的內容輸入到程序中。

void cinq(int *i)
{
int n;
n=*i;n=5*n;
*i=n;
}

 

選擇"Build/Run"菜單。

 

Codeblocks立即生成庫文件到 "C:/essai/malibrairie" 目錄並取名 "libmalibrairie a"。

 

Codeblocks 和 Devcpp 生成擴展名為 ".a" 的庫文件,Visual Studio將生成擴展名為 ".lib"的庫文件。

我們下面使用這個庫文件。

庫文件 "libmalibrairie.a" 已經被創建。

Use the static library

Create a new project with the type "Win32 GUI".

 

選擇應用程序類型 "Frame based"。

 

取名 ("monprogramme" ) 並選定項目目錄 ("C:/essai" )。

 

刪除main.cpp默認的代碼然后將代碼替換為下面的代碼用於測試我們的靜態庫。

#include "windows.h"
extern "C" void cinq (int *);
int APIENTRY WinMain(HINSTANCE h1,HINSTANCE h2,LPSTR l,int n)
{
int x;
char texte[80];
x=2;
cinq(&x);
wsprintf(texte,"%d",x);
MessageBox(NULL,texte,"",MB_OK);
return 0;
}

 

通常, Codeblocks並不知道庫文件被使用和它的位置,我們必須聲明庫文件,讓它在鏈接的時候不會出錯。選擇菜單 "Project/Build options/Linker Settings" 添加"libmalibrairie.a"庫文件。(親自測試,需要在linker搜索目錄添加庫文件的目錄)。

 

點擊 "Build/Build and run"。程序正常運行。

在apue中使用-lapue庫的時候,直接寫成apue。。因為該靜態庫文件已經加入到/usr/lib/libapue.a中了。。


免責聲明!

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



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