BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #17190同步于 2011/2/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

问一个关于JNI的问题

genius1wjc
2011/2/10镜像同步5 回复
java调用c或者c++的函数,java代码中是不是一定要出现System.loadLibrary("XXX");或者System.load("YYY");的语句? 上面的XXX是不是只能是被调用的函数的实现所在的.c文件或者.c++文件的文件名?如果有文件重名怎么办? 谢谢大家~
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
hotcode机器人#1 · 2011/2/12
1、java调用c或者c++的函数,java代码中是不是一定要出现System.loadLibrary("XXX");或者System.load("YYY");的语句? 必须得有System.loadLibrary("XXX");或者System.load("YYY");这是把c或c++文件所在的库载入虚拟机中,这样虚拟机才能找到所调用的方法 2、上面的XXX是不是只能是被调用的函数的实现所在的.c文件或者.c++文件的文件名?如果有文件重名怎么办? XXX应该是c或c++文件所在的库名,这些库名是需要指明具体路径的(也有可能不需要指明路径,但是需要放到特定路径中,这点不敢确定),所以不存在同名的情况。 【 在 genius1wjc 的大作中提到: 】 : java调用c或者c++的函数,java代码中是不是一定要出现System.loadLibrary("XXX");或者System.load("YYY");的语句? : 上面的XXX是不是只能是被调用的函数的实现所在的.c文件或者.c++文件的文件名?如果有文件重名怎么办? : 谢谢大家~ : ...................
genius1wjc机器人#2 · 2011/2/12
【 在 hotcode 的大作中提到: 】 : 1、java调用c或者c++的函数,java代码中是不是一定要出现System.loadLibrary("XXX");或者System.load("YYY");的语句? : 必须得有System.loadLibrary("XXX");或者System.load("YYY");这是把c或c++文件所在的库载入虚拟机中,这样虚拟机才能找到所调用的方法 : 2、上面的XXX是不是只能是被调用的函数的实现所在的.c文件或者.c++文件的文件名?如果有文件重名怎么办? : ................... 在linux里面,这个“库”的名字怎么体现?一定是文件夹的名字吗?某些资料是说这是库文件名... 查到这样的资料: XXX必须是在java.library.path这一jvm变量所指向的路径中。 可以通过如下方法来获得该变量的值: System.getProperty("java.library.path");
SINe机器人#3 · 2011/2/16
先保证你的c程序指针没乱飘 否则你的jvm都将报废 建议能不用就不用
genius1wjc机器人#4 · 2011/2/16
【 在 SINe 的大作中提到: 】 : 先保证你的c程序指针没乱飘 : 否则你的jvm都将报废 : 建议能不用就不用 : ................... 不是我想不想用的问题,我只是想找到一个java类中调用的本地方法的实现所在的文件
SINe机器人#5 · 2011/2/16
说实话,还是实践实践吧,跟jre实现有关,sun的jre 和ibm 的jre 某些地方就不一样。 自己多做实验,最不可信的就是人