Crashlytics error "Undefined symbols for architecture x86_64" during Pod installation Crashlytics error "Undefined symbols for architecture x86_64" during Pod installation xcode xcode

Crashlytics error "Undefined symbols for architecture x86_64" during Pod installation


For me I had similar issue, while integrating this for cordova based app.

The particular error you are seeing is because libc++ is not being linked. Crashlytics 3.0 requires libc++ (not libstdc++), libz, SystemConfiguration.framework, and Security.framework. Linking should be taken care of automatically by the module definition within the SDK. If you do not use modules, our guided installation is supposed to insert the needed libraries for linking. That obviously did not work in this case.

Solution #1: start using modules. They improve build times, make interoperability with swift possible, and are generally useful.

Solution #2: manually link libc++, libz, SystemConfiguration.framework, and Security.framework. Solution #2 - Worked for meThis answer is Ref link by mattie


In Xcode Santosh's answer not worked for me but I just change the .m file to .mm file works .

Here is the differences between .mm & .m

The major disadvantage to using .mm over .m for "normal" Objective-C is that compile times are significantly higher for Objective-C++. This is because the C++ compiler takes longer than the C compiler. With Xcode 3.2 and higher, Objective-C code can use the Clang frontend tool chain to significantly speed up Objective-C/C compiling times. Since Clang does not yet support Objective-C++/C++, this further widens the gap in compiling times between the two.

A better strategy is to use .m by default. If you need to use Objective-C++ later in development, there is no harm in renaming the file to use a .mm extension. If you so from within XCode, the project will be automatically updated to use the newly named file.

Of course all of the standard caveats apply once you try to compare Objective-C++ vs. Objective-C performance at run time. Since Objective-C++ is a C++ superset while Objective-C is a C superset, you are dealing with two different languages each with performance tradeoffs at runtime. Given that you're using Objective-X at all, you are likely writing a user-level application (not a systems level app) and the difference in performance between C and C++ wil likely be completely determined by your abilities to code efficient algorithms in each language. If you're a C++ developer, you'll likely code better than in C and visa versa. So, as always, use the appropriate tool for the job.

For reference, you may also be interested in this answer: C vs C++ (Objective-C vs Objective-C++) for iPhone

UPDATE Feb 17, 2012 As of Xcode 4.0 (with LLVM 3.0), Clang has supported Objective-C++. Even C++11 support is quite strong now.

(Objective-C, .m / .mm performance difference?)