java - ndk - El tipo ''jint'' no se pudo resolver, y JNIEnv, jclass
jni android (3)
Tratando de construir una aplicación de android / java helloWorld simple con código jni c. Estoy usando Eclipse Indigo en Windows 7. Instalé ndk r8 en una ruta sin espacio, que la biblioteca c finalmente esté compilando bien con ndk-build.cmd. Sin embargo, el archivo de encabezado generado por javah tiene errores sin resolver,
- El tipo ''jint'' no se pudo resolver
- El tipo ''JNIEnv'' no se pudo resolver
- El tipo ''jclass'' no se pudo resolver
No se vio el jni.h incluido ayer, pero después de un reinicio esta mañana, ese error ha desaparecido. También tuve un error no resuelto de JNIEXPORT y JNICALL, pero #defining parece haberlo resuelto. Atascado en los últimos 3 anteriores. Han buscado en google y en Stack Overflow en busca de respuestas, pero tan pronto como alguien encuentra una solución, no dice cuál fue esa solución :(
He comprobado las inclusiones en las perspectivas java yc / c ++ en las propiedades del proyecto. Parece que incluye los directorios jni.h que quiero, estoy usando el android-14 para plataformas de brazo. El objetivo es un IceCream Sanwich 4.0.3 (que confusamente es API 15 ?!). Iba a probar y usar un AVD para probar esto. He intentado cerrar / volver a abrir el proyecto, eliminar de Eclipse y volver a importar, pero nada de eso ha funcionado.
¿Me estoy perdiendo algunos incluye? ¿Cuáles y dónde debo colocarlos? Realmente agradecería alguna ayuda.
Haga clic derecho en el proyecto y vaya a propiedades de propiedades.
Vaya a C / C ++ General-> Rutas y símbolos .
En Incluye-> GNU C agrega el equivalente de esto:
%ndkroot%/platforms/android-8/arch-arm/usr/include
Es posible que desee apuntar a otras versiones de plataforma del NDK, solo cambie la parte de android-8 de la ruta.
Intente agregar un #undef __cplusplus
justo antes de las directivas #include
, como esto:
#undef __cplusplus
#include <string.h>
#include <jni.h>
Esto obligará a Eclipse a considerar las definiciones que non-c++
de los objetos NDK.
Recientemente me he enfrentado con el mismo problema. En mi caso, el problema fue que convertí mi proyecto Eclipse a un proyecto C ++, pero había usado el tipo C. Así que para resolver este problema simplemente eliminé la línea <nature>org.eclipse.cdt.core.ccnature</nature>
del archivo .project
del directorio del proyecto:
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
</natures>
Luego reinicie su Eclipse. Para más información puedes leer this .