2009-06-29 22 views
6

Estoy tratando de usar una biblioteca C++ (CLucene) desde mi aplicación Cocoa Touch para iPhone usando Xcode 3.1.3. Todo funciona bien cuando corro en el simulador de iPhone, pero las cosas se ponen raras cuando corro en el dispositivo. Parece que los punteros no se pasan correctamente del código Objective-C++ (mi aplicación) a la biblioteca C++ (CLucene).Código de C++ en la aplicación de iPhone

Al depurar la aplicación en el dispositivo, puedo ver una variable const char * pasada como parámetro para una función C++ cambiar de 0x12546c0 en Objective-C++ a 0x4e en C++. Como 0x4e no apunta a un const char * válido, el código de C++ falla. Esto no ocurre cuando se depura en el simulador.

Estoy compilando la biblioteca C++ directamente en la aplicación, sin vincularla a una lib estática o dinámica.

Cualquier ayuda sería muy apreciada.

Respuesta

4

Desactivar "Compilar para el pulgar" en la configuración de compilación del proyecto soluciona el problema.

+0

¿De verdad? He oído que puede acelerar los programas que usan muchas carrozas. Pero no esperaba esta respuesta a tu pregunta. – Nosredna

+0

He oído lo mismo sobre la aceleración del código, pero en este caso puedo reproducir el problema habilitando "Compilar para el pulgar". No estoy seguro de por qué ese es el caso, o por qué solo ocurre cuando se vincula a este código C++, pero claramente tiene algún impacto. –

0

No debería haber ningún problema al usar el código C++ en una aplicación de iPhone (lo hago todo el tiempo).

Los apuntadores solo se deben pasar como punteros sin ninguna interpretación.
¿Estás seguro de que el objeto Objective-C++ es un 'const char *' y no otro tipo que se está convirtiendo (incorrectamente) en un 'const char *' sobre la marcha en tiempo de ejecución?

+0

Sí, creo la matriz de caracteres. El valor es realmente un const char * y no se convierte en tiempo de ejecución. –

Cuestiones relacionadas