gpt4 book ai didi

java - C++ 在运行中的 JVM 中调用一个函数

转载 作者:行者123 更新时间:2023-11-30 03:17:41 26 4
gpt4 key购买 nike

我想创建一个 C++ 应用程序,它将在一个正在运行的 Java 应用程序中调用一个函数。这是我的 Java 应用程序的代码:

package me.jumpak.testapp;

public class TestClass {
public static void main(String[] args) {
System.out.println("Hello World!");
}

public static void mymain() { // <=== I want to call this function
System.out.println("Hello, World in java from mymain");
}
}

所以我希望 C++ 应用程序以某种方式“注入(inject)”到正在运行的 JVM 进程并调用函数 mymain 以便它执行该函数并打印消息(Hello, World in java from mymain) .我知道这是可能的,但不知道该怎么做。我不知道从哪里开始,也不知道如何在 C++ 中执行此操作我试过谷歌搜索但还没有找到任何东西。

最佳答案

您始终使用 C++ 中的 JNI 来创建或附加到现有的 jvm 实例,并创建对象或调用方法...

有点像......

// Connect to an existing jvm
jint vm = JNI_GetCreatedJavaVMs(...

// Find the class
jclass cls = env->FindClass("your/namespace/Class");

// Get the method
jmethodID m = env->GetMethodID(clsm, "methodToInvoke", "()V");

// Call the method on the object
jobject res = env->CallObjectMethod(objInstance, m);

https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html

关于java - C++ 在运行中的 JVM 中调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55286883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com