小弟学了一段时间的C后发先了一个关于库的问菜鸟问题往高手解答

cnyfk 2004-04-29 03:35:13
我以前一只认为函数库就是那些头文件,书上也是那么写的调用库函数时,直接在程序的开头包含那个函数响应的头文件就可以了。但是,这些时我发现好象还有个LIB类型的文件,也是函数库中相关的内容(不确定)。我不明白的就是函数库是用头文件和这个LIB文件组成的吗?他们之间是个什么关系?那么是不是一般的像DIRECTX SDK这样的开发包,也就是个函数库,里面只需要那些相关的头文件和LIB文件就可以了呢?关于库还希望各位前辈高手,多多跟我讲解一下。
谢谢各位耐心看完我语无伦次的提问,也希望能得到想要的解答。在下,实在是没多少分了就送上这50分望大家海涵。
...全文
13 12 点赞 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kaphoon 2004-05-03
你在安装linux底下的软件时
有些软件在你机上可能不能安装
因为他需要一个开发包
而你机上没有
这些开发包可以以静态连接库或者动态连接库出现
如果比较小的话
也可以以.h文件出现
还举个例子
你有mysql的api函数写个数据库程序
你用到它的mysql.lib文件
当然你还得include一些.h文件
这只是一种形式的差别(为了不同的目的)
  • 打赏
  • 举报
回复
ghiewa 2004-05-02
先做个编译实验,把编译器的生成make文件的选项打开,然后用notepad打开查看这个make文件 你会有发现的
其实h文件是给编译器是用的,因为在头文件里面会包含一些声明(请区分申明和定义的区分,尽管有时候定义也充当申明),而就是这个帮助编译器进行类型检查的(请参看编译原理)的。
lib配合make文件(尽管一般情况编译器并不把这个文件保存在磁盘上,除非你大开了上述的编译选项) 经过link(连接器的工作)也就有了最后的exe
  • 打赏
  • 举报
回复
julyclyde 2004-05-02
谭的书还远不到入门呢
  • 打赏
  • 举报
回复
carambo 2004-05-02
找个c的函数库先看看吧,先学会使用。然后再转到高级话题。
  • 打赏
  • 举报
回复
kaphoon 2004-05-02
其实这种东西不是你关心的
当你自己写程序时
你就会明白.lib .dll .h文件到底是什么
  • 打赏
  • 举报
回复
ejiue 2004-04-30
.h文件就是一个接口的说明。

.cpp是具体的实现,可以编译为.lib或.dll文件。
/ .lib .dll

这样的架构是由C、C++编译器分离编译的机制决定的。
C#、Java就没有头文件的概念了。
  • 打赏
  • 举报
回复
积木 2004-04-29
这些应该是工具的原理,应该可以在类似编译原理什么的书上看到一些
或者操作系统之类的书中也可能有。
而不是语言层面的,谭的书是不会讲的
  • 打赏
  • 举报
回复
cnyfk 2004-04-29
你们这么一说我对库的概念清晰多了

为什么我用的教材上就不讲这些列

我用的潭教授的C哪些书将这方面的内容?

还是我看书时看掉了?
  • 打赏
  • 举报
回复
积木 2004-04-29
编译之前不存在静态连接库,而应该是一些.h 和.cpp文件
而编译之后的静态链接库的最重要的用途就是如下的:

静态链接库是在编译时,通过链接程序将本身的代码加到.EXE模块中,并使它们一起形成一个单独的、不可分的文件。
  • 打赏
  • 举报
回复
积木 2004-04-29
函数库是由.h 和.lib文件共同组成,.h主要提供函数声明,当然也可以有实现在里面
.lib就是放置函数实现了,但是它对编译器的依赖比较大,用哪个编译器编译出来就
只能利用在哪个编译器。
  • 打赏
  • 举报
回复
cnyfk 2004-04-29
怎么理解被编译后的静态连接库?编译前的静态连接库是什么?

那我说的开发包其实就是。H和。LIB这些吧
  • 打赏
  • 举报
回复
Jinhao 2004-04-29
LIB其实就是被编译后的静态连接库,.h提供了这个库的定义,就是告诉你或编译器库里有什么东西,当编译你的代码时,编译器会把你代码中使用到的库函数与这个LIB里的实现相连接。
简言之,.h告诉有什么,.lib提供这些是什么
  • 打赏
  • 举报
回复
相关推荐
发帖
工具平台和程序库
加入

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
帖子事件
创建了帖子
2004-04-29 03:35
社区公告
暂无公告