我知道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