有没有一种方法可以调用C++;从Java使用JNI? 有一种方法可以从JNI调用STL库,我相信JNI为本地调用提供了一个类似C的接口,我们如何实现C++模板库的使用? < P>我知道这是可能的,尽管我自己没有做过。但是,如果您不十分小心,JNI代码可能会使JVM崩溃。而且,JNI代码比Java代码更难维护。我参与了一个项目,其中Java->JNI->STL和COM代码被扔掉了,我们用C#访问相同的STL和COM以及一个套接字替换了它。我们从不回头

有没有一种方法可以调用C++;从Java使用JNI? 有一种方法可以从JNI调用STL库,我相信JNI为本地调用提供了一个类似C的接口,我们如何实现C++模板库的使用? < P>我知道这是可能的,尽管我自己没有做过。但是,如果您不十分小心,JNI代码可能会使JVM崩溃。而且,JNI代码比Java代码更难维护。我参与了一个项目,其中Java->JNI->STL和COM代码被扔掉了,我们用C#访问相同的STL和COM以及一个套接字替换了它。我们从不回头,java,c++,java-native-interface,Java,C++,Java Native Interface,如果您只做了少量的JNI,那么它可能是值得的。如果您是通过JNI创建大型接口,我强烈建议您使用C#而不是Java编写与STL交互的组件,并使用套接字在C#和Java组件之间进行通信。编写、测试和维护将更加容易。我不得不问,为什么您认为有必要使用Java中的STL库。它们中是否有Java自己庞大的库集无法提供的东西 我理解为什么您必须调用自己的代码(我假设您已经分析了Java代码,并发现它不需要,否则您的努力就白费了),但您似乎在问如何直接调用STL 我们经常遇到JNI的问题,它使我们的代码不易移

如果您只做了少量的JNI,那么它可能是值得的。如果您是通过JNI创建大型接口,我强烈建议您使用C#而不是Java编写与STL交互的组件,并使用套接字在C#和Java组件之间进行通信。编写、测试和维护将更加容易。

我不得不问,为什么您认为有必要使用Java中的STL库。它们中是否有Java自己庞大的库集无法提供的东西

我理解为什么您必须调用自己的代码(我假设您已经分析了Java代码,并发现它不需要,否则您的努力就白费了),但您似乎在问如何直接调用STL


我们经常遇到JNI的问题,它使我们的代码不易移植,因此您必须有一个很好的理由希望在我们的商店中使用它,并且您必须用硬数据证明,为什么Java提供的东西是不够的。

我同意,如果您只寻找普通STL,您可能会使用Java库。但是,如果您坚持包装STL,SWIG会在JNI开箱即用(参见基本机制)中提供一些STL包装,这将产生相对稳定、经过测试的代码。

是。您需要使用SWIG类型映射将C++ STL类转换为java对象…反之亦然。 欲了解更多信息,请访问:,