2012-09-09 19 views
5

He transferido mi juego con éxito a Cocos2d-x y funciona muy bien en Linux, QNX, iOS y Mac. También configuré el NDK de Android y soy capaz de construir y ejecutar con éxito la aplicación en Android (todo desde las mismas fuentes exactas, que es muy bueno!)SimpleJSON C++ Class no puede analizar cadenas en Android (NDK) pero la misma clase funciona en cualquier otra plataforma

En Android, sin embargo, ocurre una cosa extraña: el SimpleJSON La clase .cpp que estoy usando no puede analizar cadenas JSON formateadas correctamente. Estoy usando este marco: https://github.com/MJPA/SimpleJSON

He investigado el código, pero no soy un experto en CPP para ver qué hay (si es que hay alguno) mal con él (funciona en todas las plataformas excepto en Android y compila solo multa).

Me di cuenta de que la clase hace uso de wchar_t bastante extensamente y también entiendo que eso podría ser un problema en Android.

De todos modos he estado averiguando cómo hacer que esto funcione durante las últimas 48 horas, pero fallé miserablemente. ¿Hay alguien por ahí que pueda apuntarme en la dirección correcta?

¿Existe alguna opción de compilación que olvide configurar? ¿Esta clase simplemente no va a funcionar en Android? ¿Cómo puedo cambiar la clase para que funcione correctamente en Android también?

Todos los consejos son bienvenidos.

Rgds.

+0

¿Desea publicar el código de SimpleJSON.cpp o está hablando de JSON.cpp que puede encontrar si sigue su enlace? – john

+0

Gracias. De hecho, estaba hablando de los archivos JSON.cpp y JSONValue.cpp que se pueden encontrar en el repositorio github. He estado buscando en Android incluye y parece que la implementación de wchar.h es simplemente cosmética (es una reasignación de char). Cambié todas las referencias en las clases JSON de wchar a char y de wstring a string. Todavía estoy probando los cambios, pero parece que esto resuelve mi problema (al menos en Android, las cadenas JSON se analizan correctamente). Todavía tengo que probar los cambios en las otras plataformas (pero no espero sorpresas allí). – TomBombadil

+4

Para referencia futura: este es el comentario en wchar.h: IMPORTANTE: Cualquier código que se base en la compatibilidad con caracteres anchos no es portátil ni está roto. la única razón por la que existe esta cabecera es porque soy realmente un buen tipo. Sin embargo, no soy lo suficientemente amable para proporcionarle una implementación real. en su lugar, wchar_t == char y todas las funciones de wc son resguardos de su equivalente "normal" ... – TomBombadil

Respuesta

0

Asegúrese de utilizar el último framework. También busque #if defined (ANDROID) en el código, tal vez haya un error al compilar para Android.

Cuestiones relacionadas