2012-03-17 14 views
7

Avevo bisogno di creare un framework (che richiede una libreria statica) per un progetto su cui sto lavorando. Ho usato this tutorial per creare il framework, quindi ho copiato la libreria statica nel progetto e ha funzionato.Inclusione di una libreria statica all'interno di un framework dinamico in iOS

Ma, quando ho trascinato il framework su un progetto iOS, mostra un sacco di errori.

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

Quello che penso sta accadendo è che il progetto iOS vuole ricompilare il quadro e non può, perché non è possibile individuare la libreria statica. Tutti gli errori scompaiono se aggiungo la libreria statica al progetto iOS. Questo è quello che voglio evitare.

Fondamentalmente voglio avere il progetto iOS -> Framework -> Library invece di avere la libreria sia nel progetto che nel framework.

Ho provato ad aggiungere la libreria statica come risorsa nel framework, ma non ha funzionato.

+0

qualsiasi soluzione per il tuo problema amico ??? sto affrontando un problema simile qui .. –

+0

L'ho risolto, ma ho un po 'imbrogliato. Ho avuto accesso al codice sorgente di tutti e tre i progetti, quindi ho ricompilato la libreria statica come framework. In questo modo avevo iOS Project -> Framework -> Framework e dovevo solo importare un framework. – OlivaresF

+0

non c'è ancora una soluzione reale? Non riesco nemmeno a liberarmi di questo problema se includo le librerie statiche nel progetto iOS ... – b00tsy

risposta

0

Dubito che sia possibile. Quando pensi a ciò che sta accadendo vedrai il problema.

  1. Il quadro viene compilato e la libreria statica viene elaborato in modo che le cose come simboli aggiuntivi vengono eliminati
  2. L'applicazione è ora compilato e collegato contro il quadro che può o non può aver avuto i simboli che l'applicazione sta richiedendo

ho fatto arrivare a questo lavoro se solo il quadro stava usando la libreria statica (logico), ma non riesco a trovare un modo per condividere il codice in tutto il quadro & l'applicazione.

-2

Ho seguito questo link per creare un framework personalizzato. Ho una libreria statica all'interno del mio framework e funziona perfettamente con questo.

Ho copiato i suoi passaggi in my blog per la mia comprensione insieme a uno script per renderlo universale.

+0

Dove hai le tue librerie statiche? Li hai collegati nella scheda Fasi di costruzione? – OlivaresF

0

Se un simbolo è nascosto (sia tramite simboli nascosti per impostazione predefinita/GCC_SYMBOLS_PRIVATE_EXTERN essere impostato su YES o __attribute__ ((visibility ("hidden"))) essere applicata a certi simboli), allora quel simbolo sarà disponibile durante il collegamento statico alla libreria, ma non durante il collegamento in modo dinamico il quadro .

Assicurarsi che i simboli della libreria statica non siano nascosti e che sia possibile accedervi dall'app.

Problemi correlati