java调用dll或so文件注意事项

  Java的本地调用jni。调用c为例。在Windows下调用.dll文件;在Linux下调用.so文件。

  1 Java部分:写一个Java调用的方法。

  注意:动态库的名字的写法:

  Windows环境:

  loadLibrary("libname");

  注意调用的时候要用全名,扩展名可以不写。

  Linux环境:

  loadLibrary("name");

  注意调用的时候不要用全名,要去掉前面的lib和后面的扩展名。

  编译Java文件。然后用Javah 生成.h文件给c程序用。

  注意:如果Java文件又包的话,生成的.h是不一样的。.h中的函数名会带上包名。例如:cn/common/testlib.Java,生成的.h中的函数名前面会是:cn_common_testlib。如果没有包,生成的.h中的函数名就没有cn_common_

  2 写好c程序,编译生成.dll或.so

  vc可以直接生成,或用命令行加参数的方法生成。

  3 .dll和.so放置的位置:libname.dll/libname.so

  Windows环境:

  loadLibrary("libname");

  注意调用的时候要用全名,扩展名可以不写。

  在环境变量设置PATH=%libname.dll的位置%,这样Java即可找到自己定义的库了。

  Linux环境:

  loadLibrary("name");

  注意调用的时候不要用全名,要去掉前面的lib和后面的扩展名。

  在环境变量设置:修改/etc下的profile文件加入这两句:

  LD_LIBRARY_PATH=libname.so的位置

  export LD_LIBRARY_PATH

  或者直接放在%Java_HOME%/jre/lib/i386/下面。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章