我知道Java代码可以通过JNI调用C++代码。但是,是否可以通过JNI或使用其他方法再次从C++调用Java代码?C++可以调用Java代码吗?
8
A
回答
10
是的,你当然可以。这里有一个例子:
这里的java文件:
public class InvocationHelloWorld {
public static void main(String[] 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<args.length; i++) {
System.out.print(args[i] + " ");
}
System.out.println();
}
}
}
而且继承人一些C++使用它:
void invoke_class(JNIEnv* env) {
jclass helloWorldClass;
jmethodID mainMethod;
jobjectArray applicationArgs;
jstring applicationArg0;
helloWorldClass = (env)->FindClass("InvocationHelloWorld");
if(! helloWorldClass)
{
std::cerr<<"Couldn't get \"InvocationHelloWorld\""<<std::endl;
return;
}
mainMethod = (env)->GetStaticMethodID(helloWorldClass, "main", "([Ljava/lang/String;)V");
if(! mainMethod)
{
std::cerr<<"Coulnd't get \"InvocationHelloWorld::main\""<<std::endl;
return;
}
applicationArgs = (env)->NewObjectArray(1, (env)->FindClass("java/lang/String"), NULL);
applicationArg0 = (env)->NewStringUTF("From-C-program");
(env)->SetObjectArrayElement(applicationArgs, 0, applicationArg0);
(env)->CallStaticVoidMethod(helloWorldClass, mainMethod, applicationArgs);
}
+0
完美,谢谢:-) –
4
您还可以使用SWIG自动生成JNI文件。设置过程可能会有点棘手,但是当你有很多的C++这是非常有用的代码暴露
相关问题
- 1. C#可以调用球拍代码吗?
- 2. C++代码可以从Java applet中调用吗?
- 3. 可以用javacc生成java代码吗?
- 4. Ruby应用程序可以调用Java代码吗?
- 5. 使用SWIG生成的JNI可以从C代码中调用java方法吗?
- 6. C#Web服务可以调用其他DLL代码吗?
- 7. 我可以从Progress OpenEdge ABL调用C++代码吗?
- 8. Objective-C代码可以在Class上调用Swift扩展吗?
- 9. CFFI - 在ABI模式下C代码可以用Python回调吗?
- 10. Can Go代码可以在windows生成dll或者C++/C#可以调用golang代码吗?
- 11. 从C代码调用Java
- 12. 从C#调用Java代码#
- 13. 从Java调用C#代码?
- 14. 我可以在VB.NET代码中包含Java代码吗?
- 15. 我可以将VB代码转换为C++代码吗
- 16. 是可以在webOs intead中使用的纯c/C++代码吗?
- 17. C#和C++可以交互使用高性能代码吗?
- 18. 你可以在UWP中的C#代码中使用C++ DLL吗?
- 19. 我们可以在web2py应用程序代码中使用java代码吗?
- 20. 我可以使用ajax调用方法后面的C#代码吗?
- 21. 我可以使用customErrors调用服务器端代码吗?
- 22. PHP可以调用Java对象吗?
- 23. 它可以从JavaScript调用java类吗?
- 24. 可以将Cython代码编译为dll,以便C++应用程序可以调用它吗?
- 25. 如何从Java调用Pro * C代码?
- 26. 使用j2objc将Android Studio Java代码转换为Objective-C,可以吗?
- 27. 我可以用代码替换jaxb.properties吗?
- 28. 用户可以看到Silverlight代码吗?
- 29. 这段代码可以使用fgets吗?
- 30. GWT:可以从外部JavaScript代替JSNI调用Java方法吗?
我不知道邓布利多喜欢编程:) –
我听到他在东西向导! – Luminously
@我很高兴见过他的代码。它很神奇。 – mcfinnigan