首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当几个C静态库包含具有相同签名的方法时,这会导致链接器的模糊行为

当几个C静态库包含具有相同签名的方法时,这会导致链接器的模糊行为
EN

Stack Overflow用户
提问于 2014-08-07 07:48:58
回答 1查看 52关注 0票数 0

我的环境: Win embedded (WES2009) RealTime驱动程序,用MSVS2008 / VS2010中的C语言编写的API。结果:2个独立的端口库,实现2个独立的解决方案:2个串口驱动程序的API。

一个简单的问题:我有这两个静态库,对应于两个不同的串口驱动程序。它们都在另一个VS2008项目中使用,在该项目中,我调用串口驱动程序的API。函数的签名在两个库中是相同的,但是它们的实现不同。

我的简单问题是: VS2008链接器的规则是什么?它将链接哪个库,因为它没有转换多个函数定义的链接器错误?

我已经扫描过类似的Q/A,但似乎没有一个能解决这个问题。他们通常与equal_named.lib打交道:

.libs?

或者用这个问题来解决同样的问题,但是使用unix链接器:

Linking in several C object files that contain functions with equivalent signature

(谢谢你的启发:)

EN

回答 1

Stack Overflow用户

发布于 2014-08-13 08:00:22

我想,当我将一个.lib添加到我的项目中时,MSVS2008+会弹出一个窗口,询问我是否想为新的库创建一个链接规则。我想说在某些情况下这是唯一的可能。当您从两个库中包含标头时(或者如果两个库包含相同的命名头),链接器就没有机会区分您指的是哪一个。在我的例子中,链接者的行为变得不确定,没有链接规则。

但最好的做法是避免出现这种情况。我宁愿只使用一个库,或者在其中一个库中重构名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25176952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档