سؤال

I need help. I had a framwork which was using stdc++ like std:string. Now when i have created new app for IOS7 only there is problem with linking this framework because of problems with stdc++ lib:

Undefined symbols for architecture armv7 "std::basic_string, std::allocator >::_Rep::_S_empty_rep_storage", referenced from ...

I have find out something strange that when i change the Deplyment target to ios6 in this app all is working fine. With ios7 i see errors.

I already have flag set in other linker flags: -lstdc++

Any idea what ami doing wrong?

هل كانت مفيدة؟

المحلول 2

Just an update on this answer:

This step is very important!

Ensure that C++ Standard Library is set to libstdc++ (GNU c++ standard library) in the Apple LLVM 5.0 Compiler Build Settings

Background:

I have an iOS app that abruptly stopped building for iOS 7 with standard library link errors. I had been testing the app successfully on the simulator and on an iPad mini, and archived it as well, but when I added an iPhone 5S for testing, I started getting link errors (possibly because of a new architecture in the mix?).

Searching the link errors on Google, I found advice to explicitly add libstdc++.dylib to the linked libraries. This did not work.

I experimented by adding libstdc++.6.dylib to the linked libraries instead; this eliminated the link errors, but the app crashed in the standard C++ library code very early.

Removing the explicit additions of the library and changing the compiler setting in Build Settings, as noted above, corrected the link errors and runtime problem.

Thanks to rimestad for the pointer!

نصائح أخرى

To be honest, I don't like the above answer, as it uses the static lib and not the dynamic!

I have had the problem myself and found that the problem is that xcode is unable to find any C++ files in you project and thus assumes that the libstc++ is not needed!

Quite annoying when you are linking to a static lib that uses it!!

Solution :

  • Add a empty .mm file to you project!
  • Ensure that C++ Standard Library is set to libstdc++ (GNU c++ standard library) in the Build Settings

This worked for me and I did not have to add -lstdc++ to Other Linker Flags!

Hope that helps others with the same problem.

Thanks for your help. I have found solution. I was using -lstdc++ flag in other linker flags but it is not enough now. I had to add "libstdc++.6.0.9.dylib in BuildPhases->Link Binary With Libraries. There was somewhere in the net info that xcode has problems with ios7 stdc++ lib selection and it should be selected manually.

Regards, Marek

I had a similar problem, but @MarekM's answer only solve part of my problem, so I tried to add libstdc++.dylib and libstdc++.6.dylib, and that makes all the compiling error gone.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top