关于ZBar与支付宝 symbol _base64_encode 的解决方案

来源:互联网 发布:vb for mac下载 编辑:程序博客网 时间:2024/04/27 13:44

       项目中要使用二维码扫描的功能,选择使用二维码第三方库:ZBar,导入之后发现有symbol _base64_encode问题,ZBar和支付宝这两个第三方中有静态库冲突。记录一下解决的过程。

          1.github上下载ZBar文件,解压之后,打开这个文件夹,找到iPhone文件夹,打开这个文件夹,找到zbar.xcodeproj。

          

        2.在Xcode中打开zbar.xcodeproj,设置为release版本。在src/zbar下找到symbol.c,选中这个.c文件,在其中搜索base64_encode,将所有的base64_encode都改为base64_en(这个可以任意)。修改之后command+B编译一下,这样会生成我们想要的文件,同时也确保没有任何问题。

        

       3.通过上面的步骤之后,会在/Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphoneos文件夹下生成libzbar.a文件(请根据自己的目录来寻找),这就是所需要的文件了。同时,可以在模拟器,真机下和debug,release模式下生成4种文件。


      4.打开终端,查看一下这个libzar.a的相关信息。

       lipo -info /Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphoneos/libzbar.a

      输出>>Architectures in the fat file: /Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphoneos/libzbar.a are: armv7 armv7s 
     这说明还少一个i386形式的。

    5.生成一个i386的libzbar.a,我直接放到桌面上了,还是使用命令行(根据自己的修改)

      lipo /Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphoneos/libzbar.a -arch i386 /Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphonesimulator/libzbar.a -create -output /Users/bill/Desktop/libzbar.a
    6.在终端查看一下这个新生成的libzbar.a的架构。

     lipo -info /Users/bill/Desktop/libzbar.a

    输出>>Architectures in the fat file: /Users/bill/Desktop/libzbar.a are: armv7 armv7s i386 



    ok。搞定,现在,可以使用这个libzbar.a去替换ZBarSDK中的libzbar.a文件。这样就可以解决zbar和支付宝中关于symbol _base64_encode冲突的问题。



    已经修改的ZBarSDK


转载自:http://blog.csdn.net/kid_devil/article/details/34552833

0 0
原创粉丝点击