两个动态库间函数名重复导致调用混乱

最近做了一个将具有音频水印加解嵌功能的程序编写为库文件的工作,由于本人很垃圾,过程中遇到无数困难,在此记录一个困扰时间最长的错误。

原本是一个程序,将其分开为两个:加嵌和解嵌。

由于是由一分二,所以两套代码中有部分类和函数是共有的,当时为了图省事,在两套代码中并未做区分,也没有检查代码中像static这种全局变量,导致加嵌和解嵌的代码有大量耦合的地方

在实际使用这两个库的时候,现象是:只进行加嵌无错误,只进行解嵌无错误,一旦两个任务同时使用,也就是两个库被同时调用,就会导致数据错乱。

后来分析了好久主程序代码都没有找到问题,最后才关心库是否线程安全。在两个库中加入打印发现,只调用解嵌库时,会打印加嵌库中的打印。。。。。才恍然大悟原来是有些类名、函数名、甚至有些全局的东西没有消除。在修改库文件后错误解除

但是还有一点点不明白的是,程序使用了除我写的这两个库以外,还使用了其他成百上千(夸张)的其他库文件,编译的时候也都依赖了他们,难道那些库中就没有重复的函数吗?一个都没有吗???

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值