在工程内引入了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):
hg clone http://zbar.hg.sourceforge.net:8000/hgroot/zbar/zbar cd zbar hg checkout iPhoneSDK-1.2.2 open iphone/zbar.xcodeproj
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:
unsigned
base64_encode (
char
*dst,
const
char *src,
unsigned
srclen)
=>
unsigned
base64_encode_zbar (
char
*dst,
const
char *src,
unsigned
srclen)
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.