SWIG扩展java
来源:互联网 发布:苹果电脑安装mac系统 编辑:程序博客网 时间:2024/06/05 13:20
学习了swig扩展php后,当然也要试下java了。
c代码及example.i文件不用动。直接进入第三步
3、建立java扩展
swig -java exaple.i
可以看到生成了example.java和exampleJNI.java文件,exampleJNI.java中有类似 public final static native int fact(int jarg1);
这样的语句。即用native关键字来修饰这个方法,表明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL(或so),由java去调用。
native的意思就是通知操作系统,这个函数你必须给我实现,因为我要使用。所以native关键字的函数都是操作系统实现的, java只能调用。
java是跨平台的语言,既然是跨了平台,所付出的代价就是牺牲一些对底层的控制,而java要实现对底层的控制,就需要一些其他语言的帮助,这个就是native的作用了
标识符native可以与所有其它的java标识符连用,但是abstract除外。这是合理的,因为native暗示这些方法是有实现体的,只不过这些实现体是非java的,但是abstract却显然的指明这些方法无实现体。native与其它java标识符连用时,其意义同非NativeMethod并无差别。
而且native方法不需要方法体,即方法后不需要括号,如:
public final static native int w();
java中的方法修饰符修饰方法时,一定要写在返回类型或者void的前面。
public static viod a(){};正确 public int static a(){}; 错误
4、编译
gcc -fpic -c example.c example_wrap.c -I/usr/java/j2sdk1.4.2/include -I/usr/java/j2sdk1.4.2/include/linux
这两个-I应该是java安装路径下的include和include/linux 包含jni.h的
gcc -shared example.o example_wrap.o -o libexample.so
5、使用
vim main.java
public class main {
public static void main(String argv[]) {
System.loadLibrary("example");
System.out.println(example.getMy_variable());
System.out.println(example.fact(5));
System.out.println(example.get_time());
}
}
javac main.java
java main
怎么样?也出结果了吧?什么?
Exception in thread "main" java.lang.UnsatisfiedLinkError: no example in java.library.path?
那么看看LD_LIBRARY_PATH是否有问题?得把libexample.so放到LD_LIBRARY_PATH中,或是改下这个环境变量的值就可以了。
- SWIG扩展java
- 用 SWIG 构建 PHP 扩展
- swig扩展php(一)
- 使用SWIG扩展ruby性能
- 用 SWIG 构建 PHP 扩展
- swig扩展php(二)
- 使用SWIG来扩展Python
- swig java使用实例
- SWIG c++转Java
- 使用SWIG实现C++扩展Python
- 用 SWIG 生成 TidyLib 的 Python 扩展
- [转] 用 SWIG 构建 PHP 扩展
- 使用SWIG对Python进行扩展
- 使用SWIG轻松编写Python扩展
- win7 swig c++封装 python 扩展
- SWIG
- SWIG
- SWIG
- linux内核设计与实现(笔记)更新连接地址……
- sql server 数据库备份到网络地址
- oracle 高级复制同步数据
- 第五章、运算符、表达式和语句
- 给.NET下的Windows窗体程序加载Xp样式
- SWIG扩展java
- 轻松掌握Windows窗体间的数据交互
- POJ 2502 Subway
- windows核心编程——内存管理
- Oracle Kill 进程
- 查找一个数组中不连续0出现的个数
- eclipse3.4 dropins插件安装
- 程序员学英语一!!!
- rsh, rexec教程