从http://www.sixtyfourbit.org/mq4cpp.htm 下载到的仅是MQ4CPP的源文件,由于并没有LIB库文件,一般情况下,自己建工程的话,就需要把源文件中所有的.h和.cpp文件加入到项目中来,这样造成了项目看起来非常庞大,而且每次编译都需要费很长的时间。 为了解决这个问题,我们可以利用已经编译好的.obj文件,把它们打包成一个lib文件,这样就可以作为库来链接了。 let's go.
1. 利用VC目录下的lib.exe文件打包,首先进行VS命令行环境(必须,不然会弹DLL错误),运行
lib.exe /OUT:mylib.lib *.obj
---------------------------------------------------------------------------------
下面是我从优快云中引用过来的,
非要用命令行也很简单:
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文件),如果要运行还要有个主函数.这里仅仅是为了举例子.就一切从略了.希望完全的解答了你的问题.
Top
13 楼 TianChong(*︿_︿* ○Ооo○泡泡oо㊣VC高手群:2997669) 回复于 2006-01-20 01:30:08 得分 0
补充一点:
VC带的编译器名字叫cl.exe,它有这么几个与标准程序库有关的选项: /ML、/MLd、/MT、/MTd、/MD、/MDd。这些选项告诉编译器应用程序想使用什么版本的C标准程序库。/ML(缺省选项)对应单线程静态版的标准程序库(libc.lib);/MT对应多线程静态版标准库(libcmt.lib),此时编译器会自动定义_MT宏;/MD对应多线程DLL版(导入库msvcrt.lib,DLL是msvcrt.dll),编译器自动定义_MT和_DLL两个宏。后面加d的选项都会让编译器自动多定义一个_DEBUG宏,表示要使用对应标准库的调试版,因此/MLd对应调试版单线程静态标准库(libcd.lib),/MTd对应调试版多线程静态标准库(libcmtd.lib),/MDd对应调试版多线程DLL标准库(导入库msvcrtd.lib,DLL是msvcrtd.dll)。
/ML 是缺省选项,所以你也可以不加,上例中,如果:
cl.exe /c /MLd mylib.c 不成功,你还可以试试 cl.exe /c mylib.c,多试一下吧,一定没有问题的.
这类文件多的话建议写一个bat文件(加参数的)进行处理,如果有一二百个,就写个程序一次读入所有*.c文件,再自动一个一个的调用这个bat文件,也很快就处理完了. good luck...