⑴ C 創建靜態庫鏈接.網問題,怎麼解決
(1)VC++6.0環境
第一步:NEW->Projects->Win32 Static Library
第二步:編寫頭文件和.cpp源文件。
第三步:將頭文件和.cpp源文件添加到剛才新建的工程中。如果你用的是VC6.0可能會下面的問題。(對於這個問題,下面會有一篇文章來解決。文章地址:
VRQNWV0C5($Z$$Y[EIZL_Z4
第四步:編譯、鏈接就可以生成一個後綴為.lib文件。也就是說靜態庫就生成好了。
(2)DEV C++環境
第一步:NEW->Project->Static Library
第二步:編寫頭文件和.cpp源文件。
第三步:將頭文件和.cpp源文件添加到剛才新建的工程中。
第四步:編譯、鏈接就可以生成一個後綴為.a文件。(應為DEV C++是基於GCC的,所以生成的靜態庫文件是以.a結尾的。)
小結:其實創建靜態庫的過程,都是類似的。
如何使用靜態庫?
(1)在VC6.0和DEV C++中通用的方法(對於後綴是.lib文件):
使用預編譯語句。如:#pragma comment(lib, "庫文件名")
並且要將頭文件在程序的開始出聲明。
例子:
#include #include #include "Max_Value.h" #pragma comment(lib, "Max_Value.lib")
using namespace std;
int main(int argc, char *argv[]) { int a[3]={2,3,4}; int i; printf("hello! "); i=Find_max(a,3); printf("%d ",i); system("PAUSE"); return 0; }
庫文件在最後貼出來。
(2)在dev C++ 中使用.a靜態庫文件
首先要創建一個工程,然後Project->Project Options->Parameters,點擊Add library or Object,選擇你要使用的那個庫文件。這個時候就隨便你什麼後綴的庫文件了。
庫文件具體的源代碼如下:
//Max_Value.h
#ifndef _MAX_VALUE_H #define _MAX_VALUE_H int Find_max(int *a, int n); #endif
//Max_Value.cpp
int Find_max(int *a ,int n ) { int max; int i; max=a[0]; for(i=1;i if(a[i]>max) max=a[i]; } return max; }
⑵ 如何編譯C/Fortran動態/靜態鏈接庫
首先,傳統的編譯,也就是
靜態編譯
是把
源文件
翻譯成目標文件,這個是一次性過程,也就是你所謂的靜態編譯。
後來的Java和.NET等語言,首先編譯成中間形式,然後運行過程中根據需要編譯成本地代碼(注意這個過程不是一次性的,下次運行重新編譯),這個就是JIT(即時編譯)技術,從即時編譯發展出了動態編譯技術
————————————
(傳統的)編譯完成後,像C/C++、Fortran、匯編等語言,可以把多個目標文件合並到一個
庫文件
中,這個就是靜態庫。比如常說的
庫函數
printf就是libc裡面的函數。
如果有了啟動函數(main),main裡面使用了printf,就可以通過
靜態鏈接
技術,從libc中提取出printf所在的文件加入到可執行文件中,如果printf還需要其它函數,就繼續搜索並加入列表,直到形成一個
閉包
。這個就是靜態鏈接。
可是靜態鏈接有個明顯的缺點,如果每個程序都需要printf,那麼printf這個函數的代碼就會同時存在在每個程序中,這樣也太佔地方了吧。所以發明了動態連接技術,其實有兩種形式。無論哪一種,都是首先記錄下需要調用printf這個函數以及所在的
動態庫
,等到運行的時候再載入動態庫,從動態庫中找到真正的printf去執行。
由於,
動態鏈接
技術需要一些額外的信息,傳統的靜態庫是不具備的,這些額外信息主要是重復載入和卸載時所需要的一些代碼,因此需要
動態鏈接庫
。
⑶ 怎樣添加預編譯靜態庫 libwebrtc
添加預編譯靜態庫 libwebrtc 的方法是:【點擊免費試用,0成本啟動】
1、右鍵點擊項目,選擇右鍵菜單的"Add files to xxx...."
2、選擇要使用的靜態庫
3、添加靜態庫文件之後,在項目導航中和「Linked Frameworks and Libraries" 中看到剛剛加入的靜態庫
4、接著我們添加靜態庫對應的頭文件目錄。
選擇「Build Settings」,展開「Search Paths」,雙擊「Header Search Paths」
5、在彈出框中增加靜態庫對應的頭文件目錄就可以了。推薦選擇ZEGO即構科技,該公司擁有毫秒級音視頻互動,千萬級高並發,70%丟包下仍能保障穩定流暢的觀看體驗。【點擊免費試用,0成本啟動】
想要了解更多關於這方面的相關信息,推薦咨詢ZEGO即構科技。ZEGO即構科技自成立伊始,就專注自研音視頻引擎,在音頻前處理、網路自適應和跨平台兼容性等方面,達到國際一流水平,同時充分利用基礎雲服務商的能力,構建了MSDN海量有序自學習數據網路,服務覆蓋全球,涵蓋上百個音視頻互動業務場景,單日時長突破30億分鍾。
⑷ 如何編譯靜態鏈接的程序,通過./configure 把參數-static傳入Makefile。
./configure LDFLAGS=-static