从C++访问Java类的最佳方式?(比直接使用JNI要好)
Best way to access Java classes from C++? (better than using JNI directly)
我必须在一个相当大的C++应用程序中集成一个大型Java库。一个解决方案是使用JNI,但这需要将代码交给所有类。例如,Python有一个出色的JPype解决方案(http://jpype.sourceforge.net/)使过程自动化(尽管由于C++和Python的不同性质,相同的解决方案不能应用于C++)。
谢谢,
Das
SWIG是一个工具,可以让您自动生成从一种语言到另一种语言的绑定。它支持C++、Java和其他十几种语言。
我的问题似乎不够清楚。也许混乱来自JNI,它允许在展位方向上访问。。。
我想做的是从C++访问一个Java库。也就是说,有人给我一个JAR文件,其中包含JAVA编译类的集合,我必须用C++编写代码才能访问它(因为我想将JAVA库的功能集成到C++应用程序中)。
希望这能澄清访问的方向:)
谢谢,
Das
不确定这个商业工具是否会让生活变得更轻松,但你可能想探索一下——http://www.teamdev.com/jniwrapper/index.jsf
JNA不是你想要的,但它确实让你的生活变得更轻松。它不需要任何样板文件/生成的代码——只需为要调用的方法编写一个接口。
当然,使用JNA而不是JNI是有充分理由的。
我有两个建议,可能对您有效,也可能不适用:
首先,你可以尝试一些非常简单的东西。在单独的进程中运行Java代码,并通过管道或套接字与之通信。这很容易做到,而且不需要任何疯狂的库。缺点是通信有点受限(只有一些简单的管道),您需要围绕它编写自己的包装器来通过发送数据
第二,这个图书馆到底是什么?也许我们可以建议一些不是用Java编写的替代方案,它们在C++应用程序中更容易使用?
- 通过JNI传递数据数组的最快方法是什么
- 为 NewObjectA() 函数创建 jvalues 的参数数组时出错 - JNI Invocation API
- 将 C# DLL 导入 C++ 以用于 JNI
- 用C++包装 Java 库 (JNI)
- 如何通过 JNI 将 C 字符串表情符号传递给 Java
- JNI从Android调用C++方法
- JVM 如何执行 JNI
- React Native (Android):无法通过 JNI 在 jobject 中返回字符串
- 如何将字符串数组返回到 java JNI
- JNI 日期值转换问题,在C++中获取不同的长整型值
- JNI,使用两个 .so 文件时出错,其中一个文件需要另一个文件
- Winapi - SetWindowLongPtr in ShutdownBlockReason创建/销毁JNI本机代码
- 将预编译的 C 共享库与 JNI/NDK 结合使用
- JNI 在应用程序中检测到错误:在为 innerclass 调用 NewObject 时使用了无效的 jobject
- 使用 jni 将返回带有模板的对象的 Java 代码转换为 c++
- 无法将DefineClass(JNI)与Qt资源一起使用
- 使用本机 JNI 静态方法实现C++ Java 运行时错误
- 从C++调用dll实现的JNI
- 如何在JNI中从线程内部调用JAVA方法
- 从C++访问Java类的最佳方式?(比直接使用JNI要好)