2009-06-29 15 views
6

Sto provando a utilizzare una libreria C++ (CLucene) dall'applicazione iPhone Cocoa Touch che utilizza Xcode 3.1.3. Tutto funziona bene quando corro nel simulatore di iPhone, ma le cose si fanno strane quando corro sul dispositivo. Sembra che i puntatori non vengano passati correttamente dal codice Objective-C++ (la mia app) alla libreria C++ (CLucene).Codice C++ nell'app per iPhone

Durante il debug dell'applicazione sul dispositivo, posso vedere una variabile const char * passata come parametro a una funzione C++ cambia da 0x12546c0 in Objective-C++ a 0x4e in C++. Poiché 0x4e non punta a un const char valido *, il codice C++ fallisce. Questo non succede quando si esegue il debug nel simulatore.

Sto compilando la libreria C++ direttamente nell'app, non collegando a una lib statica o dinamica.

Qualsiasi aiuto sarebbe molto apprezzato.

risposta

4

La disattivazione di "Compila pollice" nelle impostazioni di costruzione del progetto risolve il problema.

+0

Davvero? Ho sentito che può accelerare i programmi che utilizzano molti galleggianti. Ma non mi sarei aspettato questa risposta alla tua domanda. – Nosredna

+0

Ho sentito la stessa cosa sull'accelerazione del codice, ma in questo caso posso riprodurre il problema abilitando "Compile for Thumb". Non sono sicuro del perché sia ​​così, o perché avvenga solo quando si collega a questo codice C++, ma ha chiaramente un certo impatto. –

0

Non ci dovrebbero essere problemi nell'uso del codice C++ in un'applicazione per iPhone (lo faccio sempre).

I puntatori devono essere passati come puntatori senza alcuna interpretazione.
Sei sicuro che l'oggetto Objective-C++ sia un 'const char *' e non un altro tipo che viene convertito (erroneamente) in un 'const char *' al volo in fase di esecuzione?

+0

Sì, creo il char array. Il valore è in realtà un const char * e non viene convertito in fase di esecuzione. –

Problemi correlati