Ich weiß, dass Java-Code über JNI C++-Code aufrufen kann. Ist es jedoch möglich, Java-Code erneut aus C++ heraus über JNI oder mit einer anderen Methode aufzurufen?
Antworten
Zu viele Anzeigen?Ja, das kannst du auf jeden Fall. Hier ist ein Beispiel:
Hier ist die Java-Datei:
public class InvocationHelloWorld {
public static void main(String[] args) {
System.out.println("Hallo, Welt!");
System.out.println("Argumente, die an dieses Programm gesendet wurden:");
if (args.length == 0) {
System.out.println("(Keine)");
} else {
for (int i=0; i
`Und hier ist etwas C++, das es verwendet:
void invoke_class(JNIEnv* env) {
jclass helloWorldClass;
jmethodID mainMethod;
jobjectArray applicationArgs;
jstring applicationArg0;
helloWorldClass = (env)->FindClass("InvocationHelloWorld");
if(! helloWorldClass )
{
std::cerr<<"Konnte \"InvocationHelloWorld\" nicht finden"<GetStaticMethodID(helloWorldClass, "main", "([Ljava/lang/String;)V");
if(! mainMethod )
{
std::cerr<<"Konnte \"InvocationHelloWorld::main\" nicht finden"<NewObjectArray(1, (env)->FindClass("java/lang/String"), NULL);
applicationArg0 = (env)->NewStringUTF("Von-C-Programm");
(env)->SetObjectArrayElement(applicationArgs, 0, applicationArg0);
(env)->CallStaticVoidMethod(helloWorldClass, mainMethod, applicationArgs);
}`
FearlessHyena
Punkte
2646