I have been using a boost framework from the link below for my iPhone Xcode project: https://goodliffe.blogspot.com/2010/09/building-boost-framework-for-ios-iphone.html
it works fine but I always get hundreds of Apple Mach-O Linker(id) Warnings like:
Direct access in __ZN5boost15program_options6detail7cmdline24handle_additional_parserERSt6vectorISsSaISsEE to global weak symbol __ZTVN5boost17bad_function_callE means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
How to get rid of those warnings in code?
edited: By set Symbols Hidden by Default = YES, I managed to get rid of most of the warnings but there are 3 more left which won't go away, can anyone tell me why?
edited again: After a rebuild the remaining 3 warning are gone as well! So my solution did work!
If boost is included by multiple projects, each project must have the same values for
Symbols Hidden by Default Inline Methods Hidden
nerith said is right, but in Xcode 4.6.3,they is not the above "Symbols Hidden by Default" and "Inline Methods Hidden", and i set the gcc_symbols_private_extern to yes, the warning is disappear.
Doe just figured how to get rid of hundreds of warning like this : set for an entire target or project with the Symbols Hidden by Default build setting to YES
If boost is included by multiple projects, each project must have the same values for
Setting Symbols Hidden by Default to NO and Inline Methods Hidden to NO worked for me.No need to add any flag to Other C++ flags
I also had this problem.
It turns out that I was carelessly doing something like this:
Which I solved by changing to:
The linker complains about different visibility settings between your project and Boost.
You can also fix that issue by recompiling Boost with the same compatibility settings.
Just add
and
to the
bjam
command line.