免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1911 | 回复: 5
打印 上一主题 下一主题

编译器链接问题,比较怪 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-23 23:35 |只看该作者 |倒序浏览
今天遇到了比较怪的问题,具体说来是这样:
比如我有预先打包好的第三方静态库libtt.a;而libtt.a中呢,有函数func()引用CreateTimer之类的库中已定义的函数;
现在呢,我把库加入我的工程当中,我工程中也定义了CreateTimer;
这样结果出现了奇怪的问题,在跟踪可执行代码时,发现libtt.a中的函数func()链接了我定义的库,而没有想预想的采用了第三库中定义好的借口。

使用的环境:
1、Linux Red hat 企业版5;
2、Eclipse 编译环境;
3、Gcc、Gdb都是企业版自带,具体的版本没记清楚,应该比较新。

我之所以这样判断是由于在查看运行栈时,发现func()调用了自定义的函数,而该函数第三方库中没有。

怪哉,难道编译器这么弱智,还是我~~~,呵呵

论坛徽章:
0
2 [报告]
发表于 2008-06-24 00:59 |只看该作者
The linker cannot know which function should be linked becuase they have the same name. So you should specify the lib when you compile the source file func() is in.

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2008-06-24 19:47 |只看该作者

回复 #1 shangdi2007 的帖子

你是怎么编译的?

论坛徽章:
0
4 [报告]
发表于 2008-06-24 22:15 |只看该作者
你需要的答案应该在《C专家编程》这本书里,我记得书中说过,如果你自己定义的文件里有和库文件相同名字的函数,他会链接你定义的文件

论坛徽章:
0
5 [报告]
发表于 2008-06-24 23:07 |只看该作者
回答:
1、编译通过不需要链接,库中重复定义属于链接错误;
2、已通过其它手段规避该问题,但从现在来看,C语言不支持名字空间,名字冲突问题,目前还没办法解决,这样说对吗?

C语言提供其它可以规避该问题的手段吗?只要不让我改函数名就行,遗留系统,不到逼不得已,是不愿动里面代码的。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2008-06-24 23:13 |只看该作者
原帖由 shangdi2007 于 2008-6-24 23:07 发表
但从现在来看,C语言不支持名字空间,名字冲突问题,目前还没办法解决,这样说对吗?

对。C 是一门很老的语言,相信其存在的时间比这里大多数人的年纪都要大,而且还可能是大不少
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP