2011-03-02 18 views
7

Actualmente estoy trabajando con Android NDK y JNI. Estoy tratando de construir un código C++ con NDK.Problema de construir NDK con C++ en Android

pero me dio los siguientes errores:

E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:10:19: error: fstream: No such file or directory 
E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:20: error: 'ifstream' does not name a type 
E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:21: error: 'ofstream' does not name a type 
E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:22: error: 'ofstream' does not name a type 
E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:34: error: 'string' was not declared in this scope     

Puede alguien por favor me ayude a cabo?

Respuesta

11

simplemente me encontré con el mismo problema. Parece que el STL no se incluye automáticamente en los proyectos NDK por defecto. Eso también significa iostream, fstream, string etc. no se puede utilizar de inmediato. Para habilitarlos, deberá modificar su archivo Application.mk. Si no tiene uno (está en el directorio <project>/jni), simplemente cree uno nuevo, en blanco. Agregue la línea:

APP_STL := stlport_static

Además, también recuerde incluir using namespace std; o equivalente, junto con la habitual #include <iostream> etc.

+0

stl me aparece "error: fstream: No existe tal archivo o directorio" ¿Tiene alguna otra sugerencia sobre esto ... – CoDe

+0

Puede pegar la línea '# include' que incluye 'fstream' para mí. Además, ¿qué versión del SDK y JNI tienes? El SDK más nuevo a menudo no actualiza las compilaciones. También intente borrar todo en el directorio 'bin' de su proyecto y vuelva a compilar. – Warpspace

+0

tengo una solución para este problema ... es porque Android no es compatible con STL lib .. como soporte, simplemente haga que un archivo Application.mk con una sola línea contenga "APP_STL: = stlport_static" ... eso es todo. – CoDe

0

¿Se acordó de sus:

#include <iostream> 
using namespace std; 

las definiciones en la parte superior del archivo?

("using namespace std" no siempre es una buena idea, pero eso es un tema aparte.)

+0

Aún no está funcionando. Creo que ndk no pudo encontrar el archivo iostream. Este archivo está disponible en el directorio gnu-libstdC++ de la carpeta Android NDK. No sé cómo conectarme con C++ con libstdC++ – Debabrata