Implémenter la fonction de rappel dans JNI en utilisant l'interface
J'ai besoin pour mettre en œuvre fonction de rappel en Java à l'aide de “interface”. J'ai écrit l'application de la partie comme MyJavaFunction(int size, m_GetSizeInterface);
m_GetSizeInterface est une Interface qui contient la fonction de rappel GetSize. Cette méthode GetSize est de remplacer dans l'application. Dans JNI j'ai besoin d'appeler une RPC fonction ayant prototype int MyCPPFunction(int size, int (*callback)(int* ID));
Comment puis-je passer ce GetSize comme paramètre à MyCPPFunction dans JNI? S'il vous plaît aider
public int GetSize (m_SizeClass arg0)
{
g_size = arg0.size;
return 0;
}
source d'informationauteur indira | 2011-07-19
Vous devez vous connecter pour publier un commentaire.
La complication ici est que vous voulez l'appeler du code C++ natif qui vous aussi, vous voulez appeler une méthode en java. C'est en fait un peu délicat.
Vous avez besoin pour créer un JNI fonction C++ java à l'appel, et une fonction C++ correspondant
le MyCPPFunction signature de rappel. Ce dernier agira comme un wrapper pour appeler la méthode java.
Parce que le wrapper ont besoin d'informations sur la JNI de l'environnement, qui ne peuvent être fournies par des paramètres (de peur que l'on se ruine la signature) vous pouvez créer un peu de variables globales pour le tenir:
La fonction C++ java qui fera appel est le suivant:
Et la fonction wrapper est donc:
//et le code de test est: