2012-03-17 9 views
7

Necesitaba crear un marco (que requiere una biblioteca estática) para un proyecto en el que estoy trabajando. Usé this tutorial para crear el marco, luego copié la biblioteca estática en el proyecto y funcionó.Incluyendo una biblioteca estática dentro de un marco dinámico en iOS

Pero, cuando arrastré el framework a un proyecto de iOS, muestra una tonelada de errores.

`Undefined symbols for architecture i386:"_OBJC_CLASS_$_SomeClassFromTheStaticLibrary",referenced from:_OBJC_CLASS_$_AnotherClass in MyFramework` 

Lo que creo que está sucediendo es que el proyecto IOS quiere volver a compilar el marco y no puede, porque no puede localizar la biblioteca estática. Todos los errores desaparecen si agrego la biblioteca estática al proyecto de iOS. Esto es lo que quiero evitar

Básicamente quiero tener el proyecto iOS -> Framework -> Biblioteca en lugar de tener la biblioteca tanto en el proyecto como en el marco.

He intentado agregar la biblioteca estática como un recurso en el marco, pero no funcionó.

+0

cualquier solución a su problema amigo ??? Me enfrento a un problema similar aquí. –

+0

Lo resolví, pero hice una especie de trampa. Tuve acceso al código fuente de los tres proyectos, por lo que volví a compilar la biblioteca estática como marco. De esta forma tuve iOS Project -> Framework -> Framework y solo tuve que importar un framework. – OlivaresF

+0

¿ninguna solución real todavía? Incluso no puedo deshacerme de ese problema si incluyo las bibliotecas estáticas en el proyecto iOS ... – b00tsy

Respuesta

0

Dudo que esto sea posible. Cuando pienses en lo que está sucediendo, verás el problema.

  1. El marco se compila y la biblioteca estática se procesa para que cosas como símbolos adicionales son despojados a cabo
  2. La aplicación está compilado y enlazado con el marco que puede o no haber tenido los símbolos que la aplicación se requiere

hice conseguir que esto funcione si sólo el marco estaba usando la biblioteca estática (lógico), pero no puedo encontrar una manera de compartir el código a través del marco & la aplicación.

-2

He seguido este link para crear un marco personalizado. Tengo una biblioteca estática dentro de mi framework y funciona bien con eso.

He copiado sus pasos en my blog para mi comprensión junto con un script para hacerlo universal.

+0

¿Dónde tienes tus bibliotecas estáticas? ¿Los vinculaste en la pestaña de fases de compilación? – OlivaresF

0

Si un símbolo está oculto (ya sea a través Símbolos ocultos por defecto/GCC_SYMBOLS_PRIVATE_EXTERN siendo ajustado a YES o __attribute__ ((visibility ("hidden"))) que se aplica a ciertos símbolos), entonces ese símbolo estará disponible cuando se enlaza estáticamente la biblioteca, pero no cuando se enlaza dinámicamente el marco .

Asegúrate de que los símbolos de la biblioteca estática no estén ocultos, y deberías poder acceder a ellos desde tu aplicación.

Cuestiones relacionadas