我有源程序,
请问如何利用VC的命令行程序生成可被其它程序调用的lib文件?
在unix下直接用 ar 打成 .a 包就行了,
但是在windows下我直接用lib命令压成.lib包却不行。
我的步骤如下:c:\cl -c myprog.c
c:\lib /out:myprog.lib myprog.o请哪位明白人指点一下,谢谢!
请问如何利用VC的命令行程序生成可被其它程序调用的lib文件?
在unix下直接用 ar 打成 .a 包就行了,
但是在windows下我直接用lib命令压成.lib包却不行。
我的步骤如下:c:\cl -c myprog.c
c:\lib /out:myprog.lib myprog.o请哪位明白人指点一下,谢谢!
解决方案 »
- windows编程基础问题GetOpenFileName的用法
- VC++6.0 CLASSVIEW视图无缘无故少了CView类
- 怎么获取要使用的字体(API)
- 很久不来了,散分
- 高手们!停一停脚步,指导一下!C++ ADO连SQL Server中的“ 查询语句 ”如何做到灵活的更改!!!!!
- 关于教室位子布置的问题!!!懂vc简单图形的谢谢了!!!!!!
- Dll要注册吗?请高手们说说吧!
- 怎么解决MFC??.DDL的问题
- 莱鸟级提问,关于VC.NET,纯属送分,请求帮助呀,
- vc中嵌入sql问题
- 求算法:如何判断一个CString字符串代表了一个合法的文件名?
- 2006年新年快乐!我们计划实现基于WWW的软件可视化设计,如果您有兴趣,请为我们出谋划策!
LINK [objs],[exefile],[mapfile],[libs],[deffile] /A:size 排列區段位址,不可用於DOS程式
/B 抑制.lib或.obj路徑錯誤提示
/CO 加入CodeView的符號及列號
/CP:number 設定程式最大空間(單位16B)
/DO 以預設值(DOSSEG)排列區段順序
/DS 載入資料至資料區段高位址
/E 壓縮執行檔,與/CO或/INC不容
/F 使遠程呼叫致能與/PAC並用
/HE 顯示link.exe選譯項
/HI 執行時載入高記憶位址
/INC 準備加入ILINK連結
/INF 顯示連結過程的訊息
/LI 加入列號與結合位址至MAP程式
/M 加入公用符號至MAP程式
/NOD[:library] 忽略指定程式庫
/NOE 阻止LINK從程式庫中搜尋擴充字
/NOF 遠程呼叫失效
/NOI 區別大小寫字母
/NOG 忽略群組的宣告,以便與古早版相容
/NOL 抑制LINK版權訊息
/NON 與/DO同,但不加程式起始位元組
/NOP 不壓縮鄰近程式區段
/OV 設定抑制插斷
/PACKC:number 壓縮鄰近程式區段
/PACKD:number 壓縮鄰近資料區段
/PAU 暫停以便更換磁片
/PM 指定Windows或OS/2程式型態
/Q 建立程式庫給Quick語言
/SE:number 設定連結時區段總數,預設為128
/ST:number 以此設定堆疊的大小(1~64KB)
/T 建立極小模式程式.COM(需設.model tiny)
/? 顯示簡單的LINK語法
有没有人能说清怎样从 myprog.c 到 myprog.lib
能回答这个问题即可获100分,怎么无人响应
看来还是混饭吃的较多呀
首先,我问楼主,从命令行生成LIB,有什么必要?命令行是DOS年代的东西,倒现在为什么还要抓住不放?
1.用VC下的cl.exe 先将mylib.c 生成mylib.obj 中间文件
cl.exe /c /MLd mylib.c
2.用lib.exe 生成mylib.lib文件就是你要的文件了.
lib.exe /OUT:my.lib mylib.obj
注:如果你要生成exe文件,才使用link.exe对obj文件进行编译链接,否则根本不用link.exe,不关他的事.呵呵,下面是个小例子,加深理解:建一个源文件,就叫mylib.c,我上面是这么叫的,内容如下:
/* mylib.c */
#include <stdio.h>
void foo()
{
printf("%s","I am from mylib!\n");
}用 cl /c /MLd mylib.c
命令编译,注意/MLd选项是指定libcd.lib为默认标准库。lib.exe是VC自带的用于将目标文件打包成程序库的命令,所以我们可以用
lib /OUT:my.lib mylib.obj将mylib.obj打包成库,输出的库文件名是my.lib。上例不能单独运行(不能用link链接成exe文件),如果要运行还要有个主函数.这里仅仅是为了举例子.就一切从略了.希望完全的解答了你的问题.
cl.exe /c /MLd mylib.c 不成功,你还可以试试 cl.exe /c mylib.c,多试一下吧,一定没有问题的.这类文件多的话建议写一个bat文件(加参数的)进行处理,如果有一二百个,就写个程序一次读入所有*.c文件,再自动一个一个的调用这个bat文件,也很快就处理完了. good luck...
我开始之所以不成功是我的源程序的问题,里面的函数名是小写,但是调用程序里不管大写小写,都要找大写的函数名。我把C的源程序里的函数名改为大写,再打成lib包,调用程序就可以识别了。