9
votes

I had one problem during building application in the recent Xcode 5.1. Compilation fails with "Undefined symbols for architecture x86_64" error.

I build my project with Valid Architecture: armv7, armv7s and arm64. After switch to the newest environment (Xcode) I rebuild libzbar.a library in the same architecture ( I have done it based on solution found at: Linker Error in Xcode-5)

Maybe somebody also had same problem and finally he had solved it, please share with solution:)

6
It appears that the version of Zbar you downloaded does not support 64, which is required. You can try and build Zbar from source.rckoenes
Yep, I did it, I have rebuild libzbar.a based on source with proper architectures. However It does not help me, is anybody whom it works?mbutan
did u add all required frameworks???Mohit

6 Answers

27
votes

I had the same problem and I solved that way:

  • Remove the reference of folder ZBarSDK from your project.
  • Download the version for armv7, arm7s and armv64 from this link .
  • Replace the older folder for the new, (Save a copy in case )
  • Add the new folder into your project.
  • Clean the project and Build.

Let me know if it works for you.

12
votes

Recompile ZBar for iphone 6

Steps

Download the source code (you must have Mercurial for mac):

Open Terminal and run following commands

a. hg clone http://zbar.hg.sourceforge.net:8000/hgroot/zbar/zbar

b. cd zbar

c. hg checkout iPhoneSDK-1.3.1

d. open iphone/zbar.xcodeproj

In the xcode project edit the "libzbar" scheme and select Release in Build configuration

Go to Build Settings set following Architectures

a. Architectures - >Standard architectures(armv7,armv72,arm64)

b. Valid Architectures -> arm64,armv7 armv7s

Compile libzbar for device AND for simulator, here the configuration:

Find the compiled libzbar.a and go in the folder using Teminal.app,

In My Case : /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

using xcode command line tools build your universal lib:

lipo -create Release-iphoneos/libzbar.a Release-iphonesimulator/libzbar.a -o libzbar.a

Now you can use the libzbar.a created, both in device and simulator.

Ref: xcode 5.1 - Undefined symbols for architecture x86_64 (zbar)

5
votes

Make sure your libzbar.a contains all the architectures you needed in your project. You may need following to build for device and simulator:

armv7 armv7s arm64 i386 x86_64

You can test this using following command:

xcrun -sdk iphoneos lipo -info libzbar.a
5
votes

for me: xcode 6, iphone 6 works the fpauer's method!

the way:

Remove the reference of folder ZBarSDK from your project. Download the version for armv7, arm7s and armv64 from this link . Replace the older folder for the new, (Save a copy in case ) Add the new folder into your project. Clean the project and Build.

3
votes

I had same problem yesterday and I was finally able to build with 64-bit simulator.

After the link you tried, I replaced the library and all the header files. but it wasn't enough. Then I also unlink the libzbar.a from Link Binary With Libraries on Bulid Phases and re-add the library. Then it was working.

Let me know if it works for you.

2
votes

I was on the ZBar train as well for quite a while dealing with these issues since they have not been updating the SDK. Luckily if your app only has to support iOS7 onwards (which most iOS users are on now!) there is now QR/Bar Code reading support in AVFoundation so you can build your own reader very easily. Check out this tutorial:

http://www.appcoda.com/qr-code-ios-programming-tutorial/

Then bask in the beauty that is a totally Apple supported QR Code reader!