I found examples and posts to
What I couldn't find and have hassled around with for days now, is the correct way to create a static C++ lib for use in a Objective-C app under XCode 4.
I just want to use this very simple code for testing purposes:
#include <iostream>
#include "myCppLib.h"
using namespace std;
extern "C" void show_the_world() {
cout << "Hello, world!\n";
}
I compile this with armv6/armv7 target, GCC 4.2 compiler, Linking 'C++ Standard Library Type' as 'Static' and have "Symbols Hidden by Default" to YES, as described by the Xcode help for static C++ libs.
My Objective-C app which calls the 'show_the_world' function errors about the std++ lib, which seems not to be included or not correctly referenced:
Undefined symbols for architecture armv6:
"std::ios_base::Init::~Init()", referenced from:
___tcf_0 in libmyCppLib_dev.a(myCppLib.o)
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
_show_the_world in libmyCppLib_dev.a(myCppLib.o)
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int)in libmyCppLib_dev.a(myCppLib.o)
"std::cout", referenced from:
_show_the_world in libmyCppLib_dev.a(myCppLib.o)
ld: symbol(s) not found for architecture armv6
collect2: ld returned 1 exit status
I am sure that I compiled the library for the right architecture, so there must be something wrong in another setting or with my code.
Any help is welcome!
Best regards, jimmy
The correct answer was provided by Jimmy Koerting in the comments: the app needs to be linked against libstdc++.dylib to resolve the standard library symbols. Thanks to Jimmy Koerting, but one more thing i want to add here is, if you are using xcode latest version with iOS 6.1 please add this libstdc++.6.dylib
Answered in my own comment ;)
the point was to include the std++ lib into the compiling of the resulting objective-c project, too.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With