編譯程序成lib
① C語言如何生成庫文件
有一些代碼,我們編程時經常用到,或者我們對某些部分很熟悉,並寫出了一些可用的介面。這時,我們會考慮把這些c文件做成一個lib庫,以方便自己使用,或這給別人調用。
我這里介紹下在vc++6.0下如何來製作靜態庫:
第一步:創建一個工程,選擇Win32Static
Library,輸入工程名。這時就創建好了。
第二步:工程創建好了,再點擊新建,這時選擇文件,選擇c++
source
file選項,創建一個.c
文件。
在這個文件中,你可以寫入你要做成庫的c函數。當然,可以繼續創建其他c文件,然後將要供外部使用的介面單獨放到頭文件中,一般而言,一個c文件對應一個頭文件。
第三步:完成以上步驟後,我們就可以生成庫了。事實上,我們點擊編譯即可,這時就可以生成.lib文件了。
一般情況下,是可以正常生成lib文件的。有頭文件和lib文件就可以給別人用了。然後我們可以寫一個測試函數來試試可不可以使用。
要調用生成的lib中的函數,就要引入頭函數。這時,你把lib和頭文件放入當前工程中,但build的時候卻顯示了連接錯誤。那是因為你沒有把lib文件包含進來。加入下面這句話即可了:
#pragma
comment(lib,
"mylib.lib
")
Ok,自己的lib庫就這樣做成了。以後可以隨便調用了
② 怎樣編譯生成lib文件啊
需要先製作DLL文件,然後生成對應DLL文件的LIB文件,並編寫由DLL文件中的公開函數的聲明所組成的頭文件。
請參閱有關DLL文件製作的教程
③ AS400中怎麼把RPG程序編譯到指定的LIB裡面去。
創建自己的命令
用戶在日常管理中,經常會重復使用同一命令,但命令又很長,用戶可以創建用CRTDUPOBJ; CHGCMDDFT創建自己的命令簡化操作。
例如:命令WRKUSRJOB USER(*ALL) STATUS(*ACTIVE) JOBTYPE(*INTERACT) ASTLVL(*BASIC)
可以按以下步驟進行操作:
A. 輸入命令CRTDUPOBJ(Create Duplicate Object)並按F4鍵。
Create Duplicate Object (CRTDUPOBJ)
Type choices, press Enter.
From object . . . . . . . . . . > WRKUSRJOB Name, generic*, *ALL
From library . . . . . . . . . . > *LIBL Name, *LIBL, *CURLIB
Object type . . . . . . . . . . > *CMD *ALL, *ALRTBL, *AUTL...
+ for more values
To library . . . . . . . . . . . > YOURLIB Name, *FROMLIB, *SAME...
New object . . . . . . . . . . . > USERJOB Name, *OBJ, *SAME
From ASP device . . . . . . . . * Name, *, *CURASPGRP, *SYSBAS
To ASP device . . . . . . . . . *ASPDEV Name, *ASPDEV, *...
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
在用戶所在的庫(yourlib)中創建WRKUSRJOB命令的副本userjob
B. .在AS/400命令行輸入CHGCMDDFT(Change Command Default)命令,
Change Command Default (CHGCMDDFT)
Type choices, press Enter.
Command . . . . . . . . . . . . > USERJOB Name
Library . . . . . . . . . . . > yourlib Name, *LIBL, *CURLIB
New default parameter string . . > 'status(*active) jobtype(*interact)'
Bottom
F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display
F24=More keys
這樣一條新的命令被定義成功。
可以在AS/400命令行輸入yourlib/userjob 來執行你需要的功能。
④ 有一個庫的源代碼,怎麼用mingw編譯產生成lib
mingw編譯出來的靜態庫後綴名為.a,編譯出來的動態庫的導入庫後綴名為.dll.a,而在windows下後綴名為.lib的庫可能是靜態庫也可能是動態庫的導入庫。
mingw編譯出來的動態庫的導入庫可以直接在vc中直接使用,例如
#pragma comment(lib, "libx264.dll.a")
這樣你就不需要生成一個.lib後綴的動態庫的導入庫了,網上也有如何從.dll生成.lib的方法。
如果鏈接了動態庫的導入庫libpthread.dll.a,你發布的應用程序就要帶上pthread的dll。
使用靜態庫的好處是發布的應用程序組件模塊里不需要帶上相關的dll,如果要使用mingw編譯出來的靜態庫,可以如下:
#pragma comment(lib, "libx264.a")
但是僅僅鏈接這么一個靜態庫是不夠的,你還需要鏈接
libgcc.a
libmingwex.a
⑤ lib文件是什麼是不是編譯自動生成我不加lib文件運行不了
lib文件是靜態庫,這種文件中有頭文件中聲明的函數的實現代碼,一般用在靜態連編上,編譯鏈接時,將lib文件與其他模塊編譯生成的目標代碼鏈接,從而形成能夠運行的可執行文件。
#pragma comment(lib, "pcc32_vc6.lib")就是連入一個庫文件,表示鏈接pcc32_vc6.lib這個靜態庫文件來生成可執行文件。