如何从C ++调用Java函数?
我如何从C ++应用程序调用Java函数?
我知道从CMD(或类似的技术)叫他们,但我宁愿不使用它们。
例如,检查从C创建JVM。它显示了创建JVM并调用方法的示例过程。 如果JVM已经存在; 例如你的C程序被Java程序调用(回调情况),你可以缓存JNIEnv *指针。
作为一个建议,要小心从C / C ++中缓存指向JVM的指针,还有一些涉及到你可以缓存的语义,它可以在稍后调用。 为此,正如Brian Agnew指出的,检查JNI参考。
查看JNI调用接口。 这将允许您在C(或C ++)应用程序中嵌入JVM。
请注意,存在各种更简单的机制来促进从Java调用C / C ++(例如JNA)。 这可能是值得考虑的反转你的问题,以便你可以从Java调用(但我明白这可能不适用于你的特定应用程序)
此页面很有用:http://hildstrom.com/projects/jni/index.html
假设你有一个Java类:
package foo;
public class bar {
public static int timesTen(int input){
return input * 10;
}
}
一旦你有一个JVM和JNIEnv *(详细内容可以省略...),你可以从C ++调用Java方法,如下所示:
jclass myClass = env->FindClass("foo.bar");
jmethodID mid = env->GetStaticMethodID(myClass, "timesTen", "(I)I");
jint hundred = env->CallStaticIntMethod(myClass, mid, (jint)10);
这掩盖了很多细节,包括异常处理,如果省略,会使JVM崩溃。 对于所有血腥详细信息搜索“Java本地接口”并遵循Oracle链接。
链接地址: http://www.djcxy.com/p/17411.html上一篇: How to call Java functions from C++?
下一篇: Invoking JNI functions in Android package name containing underscore