xcode con boost: linker (Id) Advertencia sobre la configuración de visibilidad

He estado utilizando un marco de impulso desde el siguiente enlace para mi proyecto de iPhone Xcode: https://goodliffe.blogspot.com/2010/09/building-boost-framework-for-ios-iphone.html

funciona bien pero siempre recibo cientos de advertencias de Apple Mach-O Linker (id) como:

El acceso directo en __ZN5boost15program_options6detail7cmdline24handle_additional_parserERSt6vectorISsSaISsEE al símbolo global débil __ZTVN5boost17bad_function_callE significa que el símbolo débil no se puede anular en el tiempo de ejecución. Esto probablemente fue causado por diferentes unidades de traducción comstackdas con diferentes configuraciones de visibilidad.

¿Cómo deshacerse de esas advertencias en el código?

editado: por establecer Símbolos ocultos por defecto = SÍ, logré deshacerme de la mayoría de las advertencias pero quedan 3 más que no desaparecerán, ¿alguien puede decirme por qué?

editado de nuevo: ¡después de una reconstrucción, las 3 advertencias restantes también se han ido! ¡Entonces mi solución funcionó!

Si varios proyectos incluyen el impulso, cada proyecto debe tener los mismos valores para

Symbols Hidden by Default Inline Methods Hidden 

Acabo de imaginar cómo deshacerse de cientos de advertencias como esta: establecer un objective o proyecto completo con la configuración Símbolos ocultos por defecto de construcción en

El vinculador se queja de las diferentes configuraciones de visibilidad entre su proyecto y Boost.

También puede solucionar ese problema volviendo a comstackr Boost con la misma configuración de compatibilidad.

Solo agrega

 cxxflags=-fvisibility=hidden 

y

 cxxflags=-fvisibility-inlines-hidden 

a la línea de comando bjam .

Si varios proyectos incluyen el impulso, cada proyecto debe tener los mismos valores para

Símbolos ocultos por defecto Métodos en línea ocultos

nerith dijo que es correcto, pero en Xcode 4.6.3, no son los “Símbolos ocultos por defecto” y “Métodos en línea ocultos”, y configuré gcc_symbols_private_extern en “sí”, la advertencia desaparece.

Yo también tuve este problema.

Resulta que estaba haciendo algo así como descuidado:

 #pragma GCC visibility push(default) #include  void myExampleSymbol(); #pragma GCC visibility pop 

Lo cual solucioné cambiando a:

 #include  #pragma GCC visibility push(default) void myExampleSymbol(); #pragma GCC visibility pop 

Establecer símbolos ocultos por defecto a NO y métodos en línea ocultos a NO funcionó para mí. No es necesario agregar ninguna bandera a otras banderas de C ++