Suma de dos valores usando ndk android
He funcionado con éxito mi muestra de jni. Ahora estoy intentando agregar dos valores pero su suma no es apropiada. Estoy compartiendo mi código. Por favor dígame qué mal estoy haciendo
jint Java_com_example_hellojni_HelloJni_sumTwoValues( JNIEnv* env,jint a, jint b){ //_android_log_print("HelloJni", "values a", "%p", &a); __android_log_print("HelloJni", "LOG_TAG", "Need to print : %d %d",a, b); return (a+b); }
Y cómo estoy llamando a este método de mi actividad es la siguiente.
- Cómo mantener un objeto C ++ dentro del código Java? ¿Posible?
- ¿Cómo puedo realizar el procesamiento de eventos sin bloqueo en Android?
- Llame a un método java estático de otro paquete de código nativo
- Uso de Fluidsynth para reproducir notas de SoundFonts en Android
- Incluye la biblioteca Boost C ++ en android
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* Create a TextView and set its content. * the text is retrieved by calling a native * function. */ TextView tv = new TextView(this); tv.setText("Sum is ."+ sumTwoValues(15,7)); setContentView(tv); } /* A native method that is implemented by the * 'hellojni' native library, which is packaged * with this application. */ public native int sumTwoValues(int a,int b); // Loading 'hellojni' static { System.loadLibrary("hellojni"); }
Y el texto de Textview no es fixed.its diferente cada vez que corro. ex de la suma que tengo es 363855916
- Cómo arreglar Eclipse CDT Error "La función 'isdigit' no pudo ser resuelta" con Android NDK?
- Convertir de YUV a RGB en c + + (android-ndk)
- Cómo vincular cualquier biblioteca en la aplicación ndk
- Desbordamiento de ReferenceTable (máx = 512) JNI
- Comportamiento sorpresa de eclipse para archivos C mientras se utiliza JNI, ¿Por qué?
- Pruebas unitarias Llamadas JNI
- Los símbolos se quitan cuando se construye código nativo usando Gradle
- No se invoca el método Java cuando se llama desde pthread nativo
Probar como
jint Java_com_example_hellojni_HelloJni_sumTwoValues( JNIEnv* env, jobject obj,jint a, jint b){ //_android_log_print("HelloJni", "values a", "%p", &a); __android_log_print("HelloJni", "LOG_TAG", "Need to print : %d %d",a, b); return (a+b); }
B'coz que defina
public native int sumTwoValues(int a,int b);
como no estático
y si
public native static int sumTwoValues(int a,int b); static method
A continuación, utilice jclass
lugar de jobject
Aquí está el fragmento de código JNI
JNIEXPORT jint JNICALL Java_org_example_ndk_NativeLib_add (JNIEnv * env, jobject obj, jint value1, jint value2) { return (value1 + value2); }
Crear una clase para acceder a este método NativeLib.java
public class NativeLib { static { System.loadLibrary("ndk"); } /** * Adds two integers, returning their sum */ public native int add(int v1, int v2); }
Y en MainActivity.java
onCreate
nativeLib = new NativeLib(); res = nativeLib.add(v1, v2); result.setText(new Integer(res).toString());
Puede encontrar la demostración completa de debajo del enlace
http://junedk.blogspot.in/2014/01/ndk-sum-of-two-values.html
Gracias
Juned Khan
Escriba el código de su función de esta manera. Debe dar el valor de devolución adecuado.
JNIEXPORT jint JNICALL Java_com_example_hellojni_HelloJni_sumTwoValues(JNIEnv * env, jobject obj, jint a, jint b) { //_android_log_print("HelloJni", "values a", "%p", &a); jint total=(a+b); __android_log_print("HelloJni", "LOG_TAG", "Need to print : %d %d",a, b); return total; }
- Cómo mostrar la lista de todas las carpetas en el sistema de archivos android especialmente la tarjeta SD
- cómo iniciar un navegador con una consulta de búsqueda de imágenes de Google en android