| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2107 人关注过本帖
标题:依然是静态库编译问题
只看楼主 加入收藏
张敏樱木花道
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:137
注 册:2011-3-26
收藏
得分:0 
回复 7楼 BianChengNan
你是想自己写一个库,就像系统的库一样,只要我们直接调用里面的函数就可以,是这样吗?
你的问题是我们每次都要拷贝我们的。lib文件到我们的exe中去,你想省掉这个步骤,对吗?
2012-03-09 15:29
张敏樱木花道
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:137
注 册:2011-3-26
收藏
得分:0 
,不好意思啊,没有看到你的第一个贴,所有理解有误。。。。。。
2012-03-09 15:35
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:0 
以下是引用张敏樱木花道在2012-3-9 15:29:26的发言:

你是想自己写一个库,就像系统的库一样,只要我们直接调用里面的函数就可以,是这样吗?
你的问题是我们每次都要拷贝我们的。lib文件到我们的exe中去,你想省掉这个步骤,对吗?
我现在很想弄明白其中的原理

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-12 09:36
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
就我的理解:
静态库,就是编译链接之后就绝定一切,所有该有的代码必需都有。凡是要用到库的地方,都必须得获得库的代码,以便链接生成可执行文件。一旦链接完成,代码就是死的,立即就可以执行。动态库就不太一样了。

对编译和链接的实现过程有一定了解的话,就很清楚这之间到底做了什么。
Linux 用的技术大概就是这样。Windows 我不是很懂,动态库的实现方式和 linux 有很大差别,不过静太库好像差不多。
2012-03-13 01:10
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
动态库在链接不需要获得库的代码,只需要知道库的接口。在执行的时候,才能得知代码究竟在内存的什么位置。由于是在执行时确定,所以称作动态。
实现方式其是就是类似,链接时把调用代码的地址列成一个大表,但内容是瞎写的。执行的时候由系统负责把库代码在内存中的实际位置填回那个表里。
2012-03-13 01:14
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:0 
以下是引用pangding在2012-3-13 01:14:50的发言:

动态库在链接不需要获得库的代码,只需要知道库的接口。在执行的时候,才能得知代码究竟在内存的什么位置。由于是在执行时确定,所以称作动态。
实现方式其是就是类似,链接时把调用代码的地址列成一个大表,但内容是瞎写的。执行的时候由系统负责把库代码在内存中的实际位置填回那个表里。
应该是版主说得这样了,不过理解的还是不够透彻。不知版主有没有类似的好文章推荐一下,很想把这一块知识明了化。在网上找了很多资料看,都没找到太合适的。
好像还涉及到导入导出表 一块的知识, 然后就是pe结构。。。 真的很晕啊。如果有,还望版主指教啊

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-03-15 15:14
快速回复:依然是静态库编译问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070130 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved