2012-12-07 4 views
-2

code en C:Comment déclarer une méthode native en C avec un pointeur de structure comme type de retour dans java?

typedef struct{ 

int a; 

int b; 

}NODE; 

NODE *node; 

NODE* add(int c){ 

node->a=node->a+10; 

c=node->a+node->b; 

node->a=c; 

return node; 

} 

Comment puis-je déclarer ma fonction native "ajouter" avec le pointeur de la structure comme type de retour en Java en utilisant JNI?

+0

Je ne connais pas votre question, mais avez-vous essayé de compiler ce code? –

+0

Pas le même code, mais similaire oui. – sk89

Répondre

1

Il n'est pas possible pour votre application Java de traiter de manière significative des structures, des pointeurs ou même des pointeurs vers des structures renvoyées à partir de votre code natif. Par conséquent, JNI ne le permet pas.

Cependant, si vous voulez traiter votre pointeur sur la structure comme une poignée opaque qui est tout simplement passé autour de Java, mais seulement jamais traitées dans le code natif, vous pouvez définir la méthode native comme:

public native int add(); 

Ou

public native long add(); 

La méthode que vous utiliserez dépend de si votre code natif utilise des pointeurs 32 bits ou 64 bits. Votre code natif devra alors passer correctement de votre pointeur vers un jint ou un jlong ​​avant de le renvoyer.

+0

Merci .. je l'ai compris .. désolé pour la réponse tardive :) – sk89

Questions connexes