我继承了一个遗留的J++项目。我已经成功地将这个项目升级为标准的Sun。
然而,该项目包括一个本机C++ dll,该RNI框架代码通过特定于微软的RNI框架进行对话。
不用说,调用System.loadLibrary("myRniNativeDll")现在抛出一个UnsatisifiedLinkError,表示找不到其中一个依赖项。
我完全不知道如何将C++ RNI dll迁移到JNI;我不知道从哪里开始。我有C++源代码,但我不知道如何构建JNI。有什么技巧/教程/在线材料你的爪哇专家可以给我指点吗?
发布于 2009-09-15 21:04:10
如果许可是可以接受的(LGPL),Java本机访问提供了比JNI更友好的FFI;移植可能会减少到剥离RNI层,而仅仅公开一个简单的‘C’可调用的API。
发布于 2009-09-15 21:06:55
看看南国防军 --也许可以通过这种方式直接访问RNI;或者至少它将使移植它的工作比手动进行JNI容易得多。
发布于 2009-09-14 05:02:12
如果可能的话,我建议您考虑通过用纯->重写C++代码来避免RNI的C++ JNI移植问题。
编写JNI代码需要大量的注意,如果你弄错了,JVM的稳定性就会受到威胁。我的建议是,如果可能的话,尽量避免。
https://stackoverflow.com/questions/1419333
复制相似问题