求教:两多个静态库中有同名函数函数重名怎么办

2004年12月 C/C++大版内专家分月排行榜第二2005年1月 Linux/Unix社区大版内专家分月排行榜第二
2004年6月 Linux/Unix社区大版内专家分月排行榜第三
2005年8月 Linux/Unix社区大版内专家分月排行榜第三2005年6月 Linux/Unix社区大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。使用别人发布的2个静态链接库,出现同名函数,应该怎么解决??2个静态库,都是别人发布的,没有源码。A.lib库里有函数funB.lib库里也有函数fun都想用,怎么解决呢????
回答1:为什么不用WinHex修改B的fun为bfn呢?
回答2:探讨引用:引用:为什么不用WinHex修改B的fun为bfn呢?在静态库里这个函数名很好找吗?肯定不难找。静态库同名函数问题_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:502,320贴子:
静态库同名函数问题收藏
现在程序中用到libA.a,libB.a,因为要加新功能,需要加入libC.a。现在加入libC.a,链接时出现libA.a和libB.a中有同名函数funA,报错重定义了,请问这个问题怎么解决?这三个库都没有源码,无法重新编译。
c语言海同强大的师资阵容,因人制定课程内容,分阶段学习.c语言就到正规IT技术培训机构-海同科技,培训IT技术面对面教学,免费重读!
秒沉了,顶顶
图片来自:
群里的朋友你嚎
dlopen/dlsym/dlclose
妹纸不好看不帮
没源码 只好放弃其中一个库了
没办法。。。   --果然有理有据令人信服简直一本正经的强行胡说八道竟然令我无言以对!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或JS重名解决方案 - 左直拳 - 博客园
随笔 - 674, 文章 - 0, 评论 - 2, 引用 - 0
一个页面如果引用多个JS,或者像ASP.NET MVC,一个视图包含多个子视图,每个子视图有自己的JS,那么变量、函数的重名冲突机会将会大增。如何解决?这里有一个方案:1、用类来封装子页的JS代码。&script type=&text/javascript&&
var globalName = &左直拳&;
var A = function(){
var name = &leftfist&;
function hi(){//私有函数,外部无法访问
alert(name + & : Hi!&);//私有变量,内部可以直接访问
this.hiGlobal = function(){
alert(globalName + & : Hello!&);//全局变量,内部可以直接访问
this.sayHello = function(){//public函数,外部可访问
hi();//私有函数,内部可以直接访问
this.hiGlobal();//公有函数,内部访问也要加上 this.
var fa = new A();
&/script&&input type=&button& id=&btnHi& value=&sayHi& onclick=&fa.sayHello();& /&这种模式中,凡需要被外部访问,如HTML控件访问的,就定义成公有函数,其他的就是类内部的私有函数,冲突的机会将大大降低。2、还有另外一种方式,就是将变量、函数封装到 JSON 对象里var G = {
callback : function(){alert(&callback!&);}
,f1 : function(){
G.callback();
G.f1();但是这种方式的话,里面的元素全部都是公有的,外部全都可以访问,固然解决了重名问题,但谈不上有所封装。这种方式,感觉就好像实现了接口的类一样。并且里面的方法互相访问,同样要加上命名空间,麻烦了点。
版权声明:本文为博主原屙文章,喜欢你就担走。iOS 两个静态库存在同名文件冲突解决方案
之前在做项目时,遇到了两个静态库中存在base64.o文件冲突(支付宝SDK与QQ分享SDK),在网上查找了各种资料,最后决定把其中一个.a文件的base64.o文件拆分出去,再重新打包静态库,但最后没能成功,附上静态库一些终端操作:
1.查看文件的架构有哪些 $ lipo -info AlipayRsaLib.aArchitectures in the fat file: libzbar.a are: armv7 (cputype (12) cpusubtype (11)) i386 可以看到静态库中bao'h包含了三种cpu架构的.a文件 armv7 armv7s即(cputype (12) cpusubtype (11)) i386(模拟器)2.将armv7解压出来(armv7替换成i386即可解压i386格式.a)lipo AlipayRsaLib.a -thin armv7 -output AlipayRsaLib-armv7.a3.新建立一个文件夹出来存放解压的(.o)文件 $ mkdir armv7 $ cd armv74.将静态库中的文件解压 $ ar -x ../AlipayRsaLib-armv7.a在完成上述步骤后,我们要把其中的base64.o文件移除,再把其余的.o文件重新打包成对应cup框架的.a文件5.合并完后进行打包.o文件了$ libtool -static -o ../libnew-armv7.a *.o6.合并静态库$ lipo -create libnew-armv76.a libi386.a -output AlipayRsaLib.a本来以为这样就可以解决冲突问题,后来打包时才发现armv7s (cputype (12) cpusubtype (11))架构的.a文件无法拆分出来,上面打包的静态库不包含armv7s格式,在iphone5后面版本的真机上部分功能将失效,既然这个方法行不通,那就只能另想其它方案了。于是继续在网上查找资料,最后了解到网上的对Build Settings——Other Linker Flags配置解释: all_load就是会加载静态库文件中的所有成员,-ObjC就是会加载静态库文件中实现一个类或者分类的所有成员,-force_load(包的路径)就是会加载指定路径的静态库文件中的所有成员。所以对于使用runtime时候的反射调用的方法应该使用这三个中的一个进行link,以保证所有的类都可以加载到内存中供程序动态调用 在拿不到静态库源码情况下 ,只能采用-force_load+库文件路径方法设置Other Linker Flags,逐个加静态库,最终完美解决,发现那个静态库无法调用,就采用以下语句添加进去。-force_load EightPartyCall/standaloneclass/BaiduSocialShare/WX/libWeChatSDK(-force_load后面为静态库文件路径,根据自己项目对应路径)
最新教程周点击榜
微信扫一扫}

我要回帖

更多关于 多个静态库中有同名函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信