2009-07-07 22 views
7

Ho un'app per iPhone che fa molto affidamento sulla libreria OpenCV; in quanto tale, ho compilato una versione statica di questa libreria per l'inclusione con la mia app. Le istruzioni per farlo sono relativamente semplici: Using OpenCV on iPhone. L'unico trucco che ho incontrato è stato impostare il flag del linker, STANDARD_C_PLUS_PLUS_LIBRARY_TYPE su "standard". L'app è stata compilata e eseguita perfettamente sotto OS 2.0 e 2.2.Collegamento di librerie statiche in iPhone SDK 3.0

Dopo l'aggiornamento all'SDK 3.0 e il tentativo di ricompilare la mia app, sto riscontrando un problema con questo flag del linker. Mi viene questo errore durante il collegamento:

ld: libreria non trovato per -lstdC++ - static

E 'anche interessante il fatto che sul mio sistema, "libstdC++ - static" è presente sotto apparentemente ogni iPhoneOS e iPhoneSimulator SDK ad eccezione di iPhoneOS.platform/SDKs/iPhoneOS3.0.sk. Ecco i risultati della ricerca:

$ locate libstdc++-static 
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.1.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.0.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.1.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/lib/libstdc++-static.a 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/usr/lib/libstdc++-static.a 
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libstdc++-static.a 
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libstdc++-static.a 
/usr/lib/libstdc++-static.a 

Sono abbastanza sconcertato e non sono stati in grado di trovare tutte le risposte su Google o iPhone Dev forum. Apprezzerei molto se qualcuno potesse far luce qui.

Grazie!

+0

Quale versione è libstdC++ in OS 3.x? –

risposta

1

Un'ipotesi: prova ad aggiungere una delle directory all'opzione "Percorsi di ricerca della libreria" in Proprietà di costruzione?

+0

Questo ha funzionato! Grazie! Stavo cercando di copiare il file da un vecchio SDK, ma non funzionava (anche se non sono sicuro se dovevo fare l'equivalente di 'ldconfig' per rieseguire la scansione di quella directory, quindi stavo per riavviare invece) – pix0r

+0

fantastico! Inizialmente ho iniziato a pensare a LD_LIBRARY_PATH, quindi ho pensato che fosse probabilmente nelle proprietà. – John

0

Questo è veramente imbarazzante, l'unica cosa che posso pensare è che /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk non è nel percorso di ricerca della libreria, ma sarebbe molto improbabile.

+0

Stavo cercando di compilare per iPhoneOS, non per simulatore. Ha bisogno di lavorare per entrambi. – pix0r

+0

Hai ragione, è stato solo un passatempo passato, dov'è la libreria per iphone, allora? Non compare nel tuo elenco .... – hhafez

+0

Giusto, questo era il problema;) Sembra che Apple l'abbia lasciato in SDK 3.0, probabilmente solo un errore. Si scopre che la versione 2.2 della libreria funziona bene in 3.0. – pix0r

Problemi correlati