1、存為xx.h文件放在自創(chuàng)的文件夾下,聲明#include“xx.h” 2、還可以存為xx.h文件直接與系統(tǒng)庫文件放一起,聲明#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ù)解決您的所有建站問題。
1、不同的系統(tǒng)開發(fā)函數(shù)庫的具體步驟是不一樣的,這主要決定于編譯、鏈接環(huán)境。
2、不同的庫開發(fā)方式也不一樣,現(xiàn)在主流的庫開發(fā)有兩種,一種是靜態(tài)庫,一種是動(dòng)態(tài)庫,兩者的本質(zhì)區(qū)別是庫代碼是否和程序融合在一起,如果組裝在一起就是靜態(tài)庫,如果不組裝在一起,即為動(dòng)態(tài)庫,現(xiàn)在操作系統(tǒng)提供的多數(shù)是動(dòng)態(tài)庫,如Linux平臺(tái)的.so文件,windows平臺(tái)的DLL文件。
3、以Windows平臺(tái)為例,用戶可以通過Vc/vs等IDE集成開發(fā)環(huán)境,生成DLL工程,然后編寫def文件進(jìn)行導(dǎo)出。
庫分靜態(tài)庫和動(dòng)態(tài)鏈接庫,靜態(tài)庫以lib結(jié)尾,被編譯器里的鏈接器識(shí)別。windows下動(dòng)態(tài)庫以dll結(jié)尾,被操作系統(tǒng)加載以模塊方式映射到進(jìn)程地址空間。一般初學(xué)者先學(xué)會(huì)創(chuàng)建的是靜態(tài)庫。靜態(tài)庫是一個(gè)無需重定位的函數(shù)集。怎么做到無需重定位呢?這是編譯器做的編譯工作,例如它指定開頭的位置作為基址,剩下的代碼用到的都是相對(duì)偏移。這樣,這段二進(jìn)制代碼可以被放在內(nèi)存中的任何位置執(zhí)行,被寫入了lib文件里。在lib文件里,包含了函數(shù)名與函數(shù)地址組成的結(jié)構(gòu)體,通過它編譯器可以找到lib文件里需要的二進(jìn)制代碼并以靜態(tài)聯(lián)編的方式寫入我們調(diào)用它的exe文件里。這種代碼是被塞進(jìn)exe文件里而無需修改,并在程序執(zhí)行時(shí)被用到。為了讓庫被別人調(diào)用,我們可以寫一個(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目錄下包含庫文件的目錄路徑
我的是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 庫文件
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