演示使用swig工具建立c語言的java接口,生成.so庫和java接口文件。html
在此以前先要安裝swig,安裝方法:sudo apt-get install swig java
1.使用eclipse建立工程。linux
2.建立包名。eclipse
3.在包中建立c文件和swig接口文件。jvm
文件內容:工具
example.c測試
/* File : example.c */ #include <time.h> double My_variable = 3.0; int fact(int n) { if (n <= 1) return 1; else return n*fact(n-1); } int my_mod(int x, int y) { return (x%y); } char *get_time() { time_t ltime; time(<ime); return ctime(<ime); }
example.i命令行
/* example.i */ %module example %{ /* Put header files here or function declarations like below */ extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time(); %} extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time();
4.使用命令行建立htm
/usr/lib/jvm/default-java/include/ 是jni.h 的路徑blog
/usr/lib/jvm/default-java/include/linux 是jni_mb.h 的路徑
命令運行成功以後 .so 文件已經生成了。而後刷新一下eclipse中的工程。以下(生成的java代碼沒有加package,本身加上):
將libexample.so 複製到根目錄下邊,而後建立測試入口文件 Main.java
目錄結構以下:
Main文件代碼:
package com.woody; public class Main { static { System.loadLibrary("example"); } public static void main(String[] args) { System.out.println(example.getMy_variable()); System.out.println(example.fact(5)); System.out.println(example.get_time()); } }
Run it !
out put :
3.0
120
Fri Feb 28 16:55:47 2014
運行成功 :)
資料: