C语言中如何将一些自写的函数生成.lib文件
看了一些书,按它的作法好像不行啊。比如写了一些函数保存为fun.c,按书上的做法:
先用tcc fun.c 编译生成fun.obj文件(但这一步会出现一些问题:没有main这个函数,所以编译是失败的)
再用tlib fun.lib+fun.obj 将fun.obj加入库文件中
最后再写一个fun.h文件,里面是fun.c文件里面的函数的声明以及一些宏变量
不过我试过了,不行,不知道哪里出问题了。个人觉得可能是编译那边出问题了。望大牛们给小弟一些帮助。
----------------解决方案--------------------------------------------------------
我好惨啊。
帮帮忙,我看了书,但是就是做不了啊。
----------------解决方案--------------------------------------------------------
看看Win-TC的帮助
----------------解决方案--------------------------------------------------------
在你的fun.c的前面加上:#define _NO_MIAN
建议你别玩什么tc了,早该淘汰的东西。看你研究这种问题不像是那些考2级的,还用tc干什么?
windows下用vc6.0或vs.net , linux中用gcc ,学计算机的就应该用有用的强大的编译器。
PS:如果你编译为OBJ后用tlib fun.lib+fun.obj 命令,以后要用这个库中的函数就要在命令行下编译,我还不知道有IDE中的怎样强制加载这个fun.lib 。如果用tlib cs.lib+fun.obj就可以用IDE了,自动加载你的这个库。
----------------解决方案--------------------------------------------------------
小弟我虽说有用过VC,但是很少用到C++的语法,
虽说当年在大学里有学过一点点C++,但是没有认真地去写一些东东,现在忘得差不多了。
所以用VC也只是写一些C语言的计算。我目前的工作等还不要求要用到图形那些界面,只要能计算就可以了。
不过有打算转用别的编译器,再学点VC,赶上“时代潮流”。顺便问一句,有没有windows下面的gcc编译器啊?
您的tlib cs.lib+fun.obj这个主意相当不错,我试了可以。当然我也深知这个只是在small模式下才行的。不过可以用就行。谢谢。
[此贴子已经被作者于2007-8-9 17:59:48编辑过]
----------------解决方案--------------------------------------------------------
VC也可以编译C程序,不会C++也可以用VC呀。用VC也可以写控制台下的程序,而且TC提供的到现在还有价值的东西VC都提供了,所以你应该转到VC中来。你说你做计算的,要知道VC编译出的程序的运行效率是windows平台上最好的,想下TC编译的程序运行时要模拟出一个DOS环境,再让32位的CPU去运行16位程序的指令,完全是资源的浪费!
//////////////////////////////////////////////////////////////////////////////////////////
DEV-C++是gcc移植到windows中的最好的几个IDE之一,重要的是这个是开源软件.
它的官方主页可以下载到最新的版本和扩展的函数库.最新的Dev-c++版本好象是5版Beta9.2:
http://bloodshed.net/
////////////////////////////////////////////////////////////////////////////////////////////
你想自己的库在其他模式下也可以运行就把这个库加到其他模式的运行时库中:
CS.LIB 小模式库
CC.LIB 紧凑模式库
CM .LIB 中模式库
CL .LIB 大模式库
CH .LIB 巨模式库
之所以加到运行时库是因为这个库在编译后自动链接,自己单独写个库就要设置让TC强制链接,TC的IDE可不可以这么设置我不知道,不用IDE在命令行下用TCC我还不知道用什么参数。因为觉得现在还用TC很可笑,我C语言学到控制语句时就转到VC中,对TC的这些设置不了解,也不想去了解。
///////////////////////////////////////////////////////////////////////////////////////////////
在GCC中制作自己的库函数很容易,如你写了一个交换的库函数swap.c:
//swap.c
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
自己写一个头文件:swap.h
//swap.h
#ifndef _SWAP_H
void swap(int *,int *);
#define _SWAP_H
#endif
编译swap.c:
gcc -c swap.c -o swap.o
制作库文件swap.a:
ar rcs libswap.a swap.o
以后要用的时候在使用swap函数的文件中加入#include "swap.h",编译指令加入-lswap并用-I,-L指定swap.h,libswap.a的路径。
----------------解决方案--------------------------------------------------------