C ++ peut-il appeler du code Java?

Je sais que le code Java peut appeler du code C ++ via JNI. Est-il possible, cependant, d’appeler à nouveau le code Java à partir de C ++ via JNI ou avec une autre méthode?

Oui, vous le pouvez certainement. Voici un exemple:

Voici le fichier java:

public class InvocationHelloWorld { public static void main(Ssortingng[] args) { System.out.println("Hello, World!"); System.out.println("Arguments sent to this program:"); if (args.length == 0) { System.out.println("(None)"); } else { for (int i=0; i 

Et voici un peu de C ++ qui l'utilise:

 void invoke_class(JNIEnv* env) { jclass helloWorldClass; jmethodID mainMethod; jobjectArray applicationArgs; jssortingng applicationArg0; helloWorldClass = (env)->FindClass("InvocationHelloWorld"); if(! helloWorldClass ) { std::cerr<<"Couldn't get \"InvocationHelloWorld\""<GetStaticMethodID(helloWorldClass, "main", "([Ljava/lang/Ssortingng;)V"); if(! mainMethod ) { std::cerr<<"Coulnd't get \"InvocationHelloWorld::main\""<NewObjectArray(1, (env)->FindClass("java/lang/Ssortingng"), NULL); applicationArg0 = (env)->NewSsortingngUTF("From-C-program"); (env)->SetObjectArrayElement(applicationArgs, 0, applicationArg0); (env)->CallStaticVoidMethod(helloWorldClass, mainMethod, applicationArgs); } 

Vous pouvez également utiliser SWIG pour générer automatiquement les fichiers JNI. La configuration peut être un peu délicate, mais elle est très utile lorsque vous avez beaucoup de code C ++ à exposer.

http://www.swig.org/index.php