引入第三方類庫衝突報錯
阿新 • • 發佈:2019-01-02
在工程內引入了zbar 和baidushare 。在編譯時,丟擲瞭如下異常:
- duplicate symbol _base64_encode in: - /Users/admin/Develope/TestThirdPart/TestThirdPart/ZBarSDK/libzbar.a(symbol.o) - /Users/admin/Develope/TestThirdPart/TestThirdPart/BaiduSocialShare/BaiduSocialShare.framework/BaiduSocialShare(base64.o) - ld: 1 duplicate symbol for architecture i386 - clang: error: linker command failed with exit code 1 (use -v to see invocation)
The advanced solution: re-compile yourself the libzbar.a following this steps:
1 - Download the source code (you must have Mercurial for mac):
2 - In the xcode project edit the "libzbar" scheme and select Release in Build configuration
3 - Rename "base64_encode" in the "symbol.c" file,for example:
4 - Compile libzbar for device AND for simulator, here the configuration:
4 - Find the compiled libzbar.a and go in the folder using Teminal.app, my folder:
/Users/kappe/Library/Developer/Xcode/DerivedData/zbar-gyozyrpbqzvslmfoadhqkwskcesd/Build/Products
In this folder you you should have two sub folder Release-iphoneos and Release-iphonesimulator
5 - using xcode command line tools build you universal lib:
lipo -create Release-iphoneos/libzbar.a Release-iphonesimulator/libzbar.a -o libzbar.athe end now you can use the libzbar.a created, both in device and simulator.