有没有办法从JNI调用STL库,我相信JNI为本机调用提供了一个类似C的接口,我们如何为C ++模板库实现这一点?
答案 0 :(得分:2)
我同意如果你只是寻找普通的STL,你可能会使用Java库。但是,如果你坚持包装STL,SWIG会在JNI中提供一些开箱即用的STL包装(参见this的基本机制),这应该会生成相对稳定的测试代码。
答案 1 :(得分:0)
我知道这是可能的,虽然我自己没有这样做。但是,如果您不是非常小心,JNI代码可能会导致JVM崩溃。此外,JNI代码比Java代码更难维护。我在一个Java项目 - > JNI - > STL和COM代码被丢弃,我们用C#替换它,访问相同的STL和COM以及套接字。我们从未回头。
如果您只使用小数量的JNI,那么它可能是值得的。如果您是通过JNI创建一个大型接口,我强烈建议您在C#而不是Java中编写与STL交互的组件,并使用套接字在C#和Java组件之间进行通信。它远更容易编写,测试和维护。
答案 2 :(得分:0)
我不得不问为什么你发现有必要使用Java中的STL库。它们中有什么东西不是由Java自己的大量库提供的吗?
我明白为什么你必须调用你自己的代码(我假设你已经描述了Java代码并发现它想要,否则你的努力被浪费了)但你似乎在问如何调用STL的东西直接
我们经常遇到JNI问题而且它使我们的代码不那么便携,所以你必须有一个非常的理由想要在我们的商店中使用它,你必须证明硬数据,为什么Java提供的东西不够用。