Ho creato una libreria statica, da collegare nelle app per iPhone. Questa libreria utilizza alcune variabili e funzioni globali, come in C. Il mio problema è, quando si utilizza ad esempio:variabili esterne nella libreria statica, utilizzando Objective-C
extern
void do_stuff (const int a)
{
return a*a;
}
extern const int a_variable;
extern const int an_array[DEFINED_VALUE];
Quando uso questa funzione, o accedere a queste variabili, ovunque nel mio codice, il compilatore mi dice
"_do_stuff" si fa riferimento da: - [Object testMethod] in tests.o
"_a_variable" si fa riferimento da: - [object testMethod] in tests.o
"_an_array" si fa riferimento da: - [Object testMethod] in tests.o
Simbolo (s) non trovato Collect2: Id restituito stato 1 uscita
Qualcuno ha mai affrontato questo problema prima? So che sto facendo qualcosa di stupido, mi manca qualche concetto chiave di Objective-C o C, ma non riesco davvero a vedere cosa. Quindi speravo che qualcuno potesse aiutarmi. Grazie in anticipo.
Ho provato con la libreria collegata all'app di destinazione, quindi ho provato con l'app di destinazione in base al target della libreria. Entrambi producono lo stesso errore. Per quanto riguarda il punto di dichiarazione/definizione, in realtà ho i valori e i corpi delle funzioni definiti in un file .mm, ho appena dato un esempio per motivi di semplicità. Ovviamente le variabili non sono nominate a_variabile, non posso mostrare alcun codice a causa di un contratto sigillo. –
@ Ricardo OK, è un po 'strano. Verifica che la libreria ('blah.a') sia effettivamente visualizzata nella fase" Collega le librerie con le librerie "del target dell'app. Verificare inoltre che la libreria esporti effettivamente i simboli richiesti. Se entrambi sono veri, allora sono perplesso ... – walkytalky
Ora che ne parli, forse non sta esportando i simboli che voglio globalmente. Ma come posso esserne sicuro? –