IOS7 (solo) problema de enlace stdlibc ++

Necesito ayuda. Tenía un framwork que estaba usando stdc ++ como std: string. Ahora cuando he creado una nueva aplicación para IOS7, solo hay un problema al vincular este framework debido a problemas con stdc ++ lib:

Símbolos no definidos para la architecture armv7 “std :: basic_string, std :: allocator> :: _ Rep :: _ S_empty_rep_storage”, a la que se hace referencia desde …

He descubierto algo extraño que cuando cambio el objective de Deplyment a ios6 en esta aplicación todo está funcionando bien. Con iOS7 veo errores.

Ya tengo bandera establecida en otros indicadores del enlazador: -lstdc ++

¿Alguna idea de lo que estoy haciendo mal?

Solo una actualización de esta respuesta:

¡Este paso es muy importante!

Asegúrese de que C ++ Standard Library esté establecida en libstdc ++ (biblioteca estándar GNU c ++) en la configuración de comstackción del comstackdor Apple LLVM 5.0

Fondo:

Tengo una aplicación de iOS que dejó de construir para iOS 7 con errores de enlace de biblioteca estándar. Estuve probando la aplicación con éxito en el simulador y en un iPad mini, y también la archivé, pero cuando agregué un iPhone 5S para probar, comencé a recibir errores de enlace (posiblemente debido a una nueva architecture en la mezcla?).

Al buscar los errores de enlace en Google, encontré consejos para agregar explícitamente libstdc ++. Dylib a las bibliotecas vinculadas. Esto no funcionó.

Experimenté agregando libstdc ++. 6.dylib a las bibliotecas vinculadas; esto eliminó los errores de enlace, pero la aplicación se bloqueó en el código estándar de la biblioteca C ++ muy temprano.

La eliminación de las adiciones explícitas de la biblioteca y el cambio de la configuración del comstackdor en Configuración de comstackción, como se indicó anteriormente, corrigió los errores de enlace y el problema de tiempo de ejecución.

¡Gracias a rimestad por el puntero!

Para ser sincero, no me gusta la respuesta anterior, ¡ya que usa la lib estática y no la dinámica!

Yo mismo tuve el problema y descubrí que el problema es que xcode no puede encontrar ningún archivo C ++ en su proyecto y asume que no es necesario libstc ++.

¡Muy molesto cuando estás enlazando a una lib estática que lo usa!

Solución:

  • ¡Agregue un archivo .mm vacío a su proyecto!
  • Asegúrese de que la biblioteca estándar de C ++ esté configurada en libstdc ++ (biblioteca estándar de GNU C ++) en la configuración de comstackción.

¡Esto funcionó para mí y no tuve que agregar -lstdc ++ a otras banderas enlazadoras !

Espero que ayude a otros con el mismo problema.

Gracias por tu ayuda. He encontrado una solución. Estaba usando la bandera -lstdc ++ en otras banderas del enlazador, pero ahora no es suficiente. Tuve que agregar “libstdc ++. 6.0.9.dylib en BuildPhases-> Link Binary With Libraries. Había en algún lugar de la información de red que xcode tiene problemas con la selección lib de ios7 stdc ++ y debe seleccionarse manualmente.

Saludos, Marek

Tuve un problema similar, pero la respuesta de @ MarekM solo solucionó parte de mi problema, así que traté de agregar libstdc ++. Dylib y libstdc ++. 6.dylib, y eso hace que desaparezca todo el error de comstackción.