jni no admite tipos como void *, unsigned int *, ... ¿Qué hacer?
Yo tengo.asi qu (biblioteca compartida) escrita en C ++, llamémosla funcionalidad.so en el que implemento diferentes funciones, aquí hay una lista de algunas funciones:
1. unsigned long Initialize(void* userData);
2. unsigned long Uninitialize(void);
3. unsigned long DeviceOpen( unsigned long id, unsigned long* device);
4. unsigned long DeviceClose( unsigned long device );
y así ..
Quiero usar esta biblioteca funcionalidad.so) funcionalidad en mi aplicación Java para Android. Para eso creo la carpeta jni en mi carpeta de proyecto de aplicación de Android y coloco allí los archivos:
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Test_library
LOCAL_SRC_FILES := Test_library.c
## Linking functionality library
LOCAL_LDLIBS := -lfunctionality
include $(BUILD_SHARED_LIBRARY)
Test_library.c
#include <string.h>
#include <jni.h>
#include "Test_library.h"
jint Java_com_Dsm_Test_DsmLibraryTest_vtUninitialize(JNIEnv* env, jobject thiz) {
return Uninitialize( );
}
jint Java_com_Dsm_Test_DsmLibraryTest_vtDeviceClose(JNIEnv* env, jobject thiz, jint hDevice) {
return DeviceClose( hDevice );
}
Test_library.h
Un archivo de encabezado dondeInicializa, Desinicializar, DeviceOpen, DeviceClosee declaran @ funciones.
Después de esto corro ndk-build y cree una biblioteca Test_library.so y cárguela en mi aplicación java y úsela así:
// Some code
public native int Uninitialize( );
public native int DeviceClose( int hDevice );
static {
System.loadLibrary("Test_library");
}
Todo funciona bien. Después quiero agregar otras dos funciones
1. unsigned long Initialize(void* userData);
2. unsigned long DeviceOpen( unsigned long id, unsigned long* device);
`
Ahora preguntas: ¿Cómo puedo escribir estas dos funciones como nativas en Java? Como no hayvacío osuscrito largo * tipos en javaCómo puedo escribir las mismas funciones en Test_library.c que en jni.h no hayvací ** osuscrito largo * tiposGracias por la ayuda