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/下面。