刚开始学习动态链接库,所以理所当然要区分静态链接库和动态链接库,刚看了书,对于静态链接有些疑问:
首先我谈谈我对静态链接库的理解,不知道正确不正确,静态链接库就是lib文件的集合,而每一个lib文件就是若干函数(假设只有函数)的定义,通过#include 了包含这些函数声明的头文件后,我们的应用程序就可以使用lib文件中的函数。那他和直接给出那个函数定义的文件,比如.cpp文件,和头文件有什么区别,静态链接库有什么用??
还有不明白的是,静态链接库中的lib文件只要用到,则整个lib文件的内容都放进了exe文件中,那它是被编译进去还是连接的时候连接进去的??我比较菜,虚心请教。谢谢。
首先我谈谈我对静态链接库的理解,不知道正确不正确,静态链接库就是lib文件的集合,而每一个lib文件就是若干函数(假设只有函数)的定义,通过#include 了包含这些函数声明的头文件后,我们的应用程序就可以使用lib文件中的函数。那他和直接给出那个函数定义的文件,比如.cpp文件,和头文件有什么区别,静态链接库有什么用??
还有不明白的是,静态链接库中的lib文件只要用到,则整个lib文件的内容都放进了exe文件中,那它是被编译进去还是连接的时候连接进去的??我比较菜,虚心请教。谢谢。
解决方案 »
- 求助。。。做了个小型的画图程序
- 结构体写入文件的疑问
- urldownloadtofile一个诡异的问题
- 如何把网页复制,并以bmp图片的形式显示出来?
- 请问,怎么能在一个对话框的窗体上面让用户输入文字呢?
- 在帖子http://www.csdn.net/Expert/TopicView2.asp?id=1030414中发言的各位来领奖了。
- 急!!!!!加急!!关于SQL SERVER数据库的问题
- 自己处理消息时,传递的WPARAM,LPARAM类型不匹配问题。
- MFC对话框机制
- 请教如何编写视频上传程序?类似有iTudou视频上传客户端那样的
- 求救,opengl绘图为何不能在屏幕上显示
- 为什么在我的类向导CMainFrame里没有WM_DRAWITEM消息?
动态链接库,运行时动态装载
lib库有两种,一种是包含了函数所在DLL文件和文件中函数位置的信息,称为导出库;一种是包含函数代码本身,一般现在有了DLL,用的是前一种库;以前在DOS下的TC/BC等,是后一种库。包含函数原型声明的,是头文件(.h)。“通过#include 了包含这些函数声明的头文件后,我们的应用程序就可以使用lib文件中的函数”
还要指定编译器链接相应的库文件。在IDE环境下,一般是一次指定所有用到的库文件,编译器自己寻找每个模块需要的库;在命令行编译环境下,需要指定每个模块调用的库。“那他和直接给出那个函数定义的文件,比如.cpp文件,和头文件有什么区别,静态链接库有什么用”
cpp文件是源代码,库文件是编译后的二进制代码,比如你可以调用Windows的API,但是不能看到其源代码一样。“还有不明白的是,静态链接库中的lib文件只要用到,则整个lib文件的内容都放进了exe文件中,那它是被编译进去还是连接的时候连接进去的”
只有用到的部分,才在链接的时候链接到目标代码中。