1、存為xx.h文件放在自創(chuàng)的文件夾下,聲明#include“xx.h” 2、還可以存為xx.h文件直接與系統(tǒng)庫(kù)文件放一起,聲明#includexx.h(這樣會(huì)快些)
創(chuàng)新互聯(lián)公司于2013年成立,先為德宏州等服務(wù)建站,德宏州等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為德宏州企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
1、不同的系統(tǒng)開(kāi)發(fā)函數(shù)庫(kù)的具體步驟是不一樣的,這主要決定于編譯、鏈接環(huán)境。
2、不同的庫(kù)開(kāi)發(fā)方式也不一樣,現(xiàn)在主流的庫(kù)開(kāi)發(fā)有兩種,一種是靜態(tài)庫(kù),一種是動(dòng)態(tài)庫(kù),兩者的本質(zhì)區(qū)別是庫(kù)代碼是否和程序融合在一起,如果組裝在一起就是靜態(tài)庫(kù),如果不組裝在一起,即為動(dòng)態(tài)庫(kù),現(xiàn)在操作系統(tǒng)提供的多數(shù)是動(dòng)態(tài)庫(kù),如Linux平臺(tái)的.so文件,windows平臺(tái)的DLL文件。
3、以Windows平臺(tái)為例,用戶可以通過(guò)Vc/vs等IDE集成開(kāi)發(fā)環(huán)境,生成DLL工程,然后編寫(xiě)def文件進(jìn)行導(dǎo)出。
庫(kù)分靜態(tài)庫(kù)和動(dòng)態(tài)鏈接庫(kù),靜態(tài)庫(kù)以lib結(jié)尾,被編譯器里的鏈接器識(shí)別。windows下動(dòng)態(tài)庫(kù)以dll結(jié)尾,被操作系統(tǒng)加載以模塊方式映射到進(jìn)程地址空間。一般初學(xué)者先學(xué)會(huì)創(chuàng)建的是靜態(tài)庫(kù)。靜態(tài)庫(kù)是一個(gè)無(wú)需重定位的函數(shù)集。怎么做到無(wú)需重定位呢?這是編譯器做的編譯工作,例如它指定開(kāi)頭的位置作為基址,剩下的代碼用到的都是相對(duì)偏移。這樣,這段二進(jìn)制代碼可以被放在內(nèi)存中的任何位置執(zhí)行,被寫(xiě)入了lib文件里。在lib文件里,包含了函數(shù)名與函數(shù)地址組成的結(jié)構(gòu)體,通過(guò)它編譯器可以找到lib文件里需要的二進(jìn)制代碼并以靜態(tài)聯(lián)編的方式寫(xiě)入我們調(diào)用它的exe文件里。這種代碼是被塞進(jìn)exe文件里而無(wú)需修改,并在程序執(zhí)行時(shí)被用到。為了讓庫(kù)被別人調(diào)用,我們可以寫(xiě)一個(gè)頭文件.h,包含函數(shù)原型及聲明。
簡(jiǎn)單的一個(gè)例子,但是基本的程序編譯的思想都在里面了,具體的需要你自己體會(huì)和查資料
跟著下面的步驟走
------------------------
第一步:我的電腦-屬性-高級(jí)-環(huán)境變量
添加3個(gè)變量
1.名字:path 值:vc的安裝目錄里面包含cl.exe的bin目錄路徑+";"+vc目錄下包含mspdb80.dll的目錄的路徑
比如我的是D:\Program Files\Microsoft Visual Studio 8\VC\bin;D:\Program Files\Microsoft Visual Studio 8\Common7\IDE;
2.名字:include 值:vc安裝目錄下的include目錄,主要是為了找到頭文件,我的是D:\Program Files\Microsoft Visual Studio 8\VC\include;D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include;
3.名字:lib 值:vc目錄下包含庫(kù)文件的目錄路徑
我的是D:\Program Files\Microsoft Visual Studio 8\VC\lib;D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib;
第二步:需要下面兩個(gè)文件
//-------------libdemo.c
#include stdio.h
void lib_func()
{
printf("this routine in lib\n");
}
//------------main.c
void lib_func();
int main(int argc, char *argv[])
{
lib_func();
}
第三步:命令
cl /c libdemo.c '編譯libdemo.c 生成libdemo.obj
lib libdemo.obj '生成libdemo.lib 庫(kù)文件
cl /c main.c '編譯main.c
link main.obj libdemo.lib '生成main.exe
---------------------------------------------------
呵呵 加點(diǎn)東西,參看4樓的建議,在做個(gè)dll,COM組件就不做了,有點(diǎn)復(fù)雜了
1。把libdemo.c 稍微改下
//-------------libdemo.c
#include stdio.h
__declspec (dllexport) void lib_func()
{
printf("this routine in lib\n");
}
2。命令
cl /c libdemo.c main.c
link libdemo.obj /dll '生成libdemo.lib
link main.obj libdemo.lib
新聞名稱:c語(yǔ)言庫(kù)函數(shù)可以自己寫(xiě)嗎,c語(yǔ)言如何編寫(xiě)屬于自己的庫(kù)
本文路徑:http://chinadenli.net/article4/phjpie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站建設(shè)、做網(wǎng)站、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)