在Java应用程序中与Ogre(C++)连接的最佳方法是什么?

sea*_*rse 5 c++ java ogre

我有一个Java应用程序,并希望在其中连接Ogre.特别是Ogre是一个3D游戏引擎库,其中包含大量复杂的C++对象.我有多种选择来实现这一目标

1.)使用Raw JNI(因为JNI非常复杂)

2.)使用SWIG + JNI(有点简单......但仍然涉及JNI)

3.)使用Lua和NO JNI(使用lua绑定到Ogre)...基本上使用Lua有帮助,因为将C++ lib与Lua连接起来要容易得多,从java调用Lua也不会太难.

4.)使用Ogre4j(使用JNI将Java绑定到Ogre ......但是这个项目没有使用最新的Ogre版本更新)

哪些/看起来是最好的选择,记住Ogre的未来维护/升级?

选择3号值得尝试吗?

t0r*_*r0X 3

我想建议第五个选项:JNA https://github.com/twall/jna,一个前 java.net 项目。

我的推理是:选项 1 和 2 级别太低,选项 3 是实验性的(你提到“大量复杂的 C++ 对象”),选项 4 肯定缺乏更新。JNA 仍然得到维护、开源(LGPL)、文档化和跨平台(尽管文档/示例可能表明相反)。

更新:
我听说过第六个选项,即"inspired by JNA": BridJ http://code.google.com/p/bridj/。FAQ和Wiki很好地解释差异及其背后的原因。BridJ 是活跃且开源的(BSD 和 Apache 许可证)。