2013韩国电影推荐:SWIG入门实例
来源:百度文库 编辑:中财网 时间:2024/04/28 16:47:38
第一次使用swig,通过swig官网上的例子进行了一次实验。
官网使用教程:http://www.swig.org/translations/chinese/tutorial.html
此次实验主要是在ubuntu下实现java接口,使java可以调用c实现的函数。
首先安装swig,在终端上输入:sudo apt-get install swig
下面开始本次实验:
1.在/home/lance/practice/swig下新建example.c,写入以下代码:
首先进入example.i的目录下,cd /home/lance/practice/swig
然后在终端输入:swig -java example
会生成以下几个文件:
example.java
example_wrap.c
exampleJNI.java
之后编译.c文件:gcc -c example.c example_wrap.c -I /usr/lib/jvm/java-6-sun/include/ -I /usr/lib/jvm/java-6-sun/include/linux/
其中:/usr/lib/jvm/java-6-sun/include/是jni.h的路径, /usr/lib/jvm/java-6-sun/include/linux/是jni_mb.h的路径
会生成以下两个.o文件:
example.o
example_wrap.o
最后生成共享库:gcc -shared example.o example_wrap.o -o libexample.so
这样在目录下就会生成 libexample.so。当然为了保证后java端能加载这个共享库,应该将.so文件放在/lib或者/usr/lib下,或者以面的代码中加入目标路径:sudo gcc -shared example.o example_wrap.o -o /lib/libexample.so,这样就直接将共享库生成在/lib下了。
4.编写java运用程序
到这儿已经将动态库(共享库)生成了,接下来的工作就是写java运用程序了。
编写main.java文件:
public class main {
public static void main(String argv[]) {
System.loadLibrary("example");
// System.load("/home/lance/practice/swig/libexample.so");
System.out.println(example.getMy_variable());
System.out.println(example.fact(5));
System.out.println(example.get_time());
}
}
说明:
加载动态库的方法:
第一种:
1.System.loadLibrary("name"),loadLibrary function must not include the file extension name in the string, that is .dll or .so,相应的动态库名为libname.so
2.可以通过System.out.println(System.getProperty("java.library.path")); 可以找到库路径。
3.libname.so 应放在库路径下
第二种:
用System.load("本地库路径/libname.so")
如此例:
System.load("/home/lance/practice/swig/libexample.so");
之后编译,java:javac main.java
再运行:java main
终端将会输出以下信息:
3.0
120
Wed Nov 23 17:16:39 2011
这样此次实验就完成了!
官网使用教程:http://www.swig.org/translations/chinese/tutorial.html
此次实验主要是在ubuntu下实现java接口,使java可以调用c实现的函数。
首先安装swig,在终端上输入:sudo apt-get install swig
下面开始本次实验:
1.在/home/lance/practice/swig下新建example.c,写入以下代码:
/* File : example.c */3.通过终端建立java模块:
#include
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);
}
2.编写接口文件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();
首先进入example.i的目录下,cd /home/lance/practice/swig
然后在终端输入:swig -java example
会生成以下几个文件:
example.java
example_wrap.c
exampleJNI.java
之后编译.c文件:gcc -c example.c example_wrap.c -I /usr/lib/jvm/java-6-sun/include/ -I /usr/lib/jvm/java-6-sun/include/linux/
其中:/usr/lib/jvm/java-6-sun/include/是jni.h的路径, /usr/lib/jvm/java-6-sun/include/linux/是jni_mb.h的路径
会生成以下两个.o文件:
example.o
example_wrap.o
最后生成共享库:gcc -shared example.o example_wrap.o -o libexample.so
这样在目录下就会生成 libexample.so。当然为了保证后java端能加载这个共享库,应该将.so文件放在/lib或者/usr/lib下,或者以面的代码中加入目标路径:sudo gcc -shared example.o example_wrap.o -o /lib/libexample.so,这样就直接将共享库生成在/lib下了。
4.编写java运用程序
到这儿已经将动态库(共享库)生成了,接下来的工作就是写java运用程序了。
编写main.java文件:
public class main {
public static void main(String argv[]) {
System.loadLibrary("example");
// System.load("/home/lance/practice/swig/libexample.so");
System.out.println(example.getMy_variable());
System.out.println(example.fact(5));
System.out.println(example.get_time());
}
}
说明:
加载动态库的方法:
第一种:
1.System.loadLibrary("name"),loadLibrary function must not include the file extension name in the string, that is .dll or .so,相应的动态库名为libname.so
2.可以通过System.out.println(System.getProperty("java.library.path")); 可以找到库路径。
3.libname.so 应放在库路径下
第二种:
用System.load("本地库路径/libname.so")
如此例:
System.load("/home/lance/practice/swig/libexample.so");
之后编译,java:javac main.java
再运行:java main
终端将会输出以下信息:
3.0
120
Wed Nov 23 17:16:39 2011
这样此次实验就完成了!
哪儿有{powerbuilder 8.0 实例入门}这书卖呀
网上哪有VB入门的电子书啊??有实例的那种~!
网上哪有VB入门的电子书啊??有实例的那种~!!
struts实例代码 入门的比如二级联表,分页呀等,希望那个高手大哥给点学习
那里可以下<<c++ builder实例入门>>这本中的原码啊?陈雪飞编著,中国青年出版社出版
急求ASP.NET基于vb语言的入门电子书教程,最好是对照实例讲解的!谢谢
<b>哪位可以提供或告知关于:'巧夺天工之Dreamweaver入门与进阶实例'的附带光盘的内容呀!!</b>
请问哪里可以买到珠海出版社出版的《实例版Flash MX 入门与进阶》这本书,2003年一月出版的
CorelDRAW实例
信息战实例
visio实例
实例解答
噪声实例
保险实例
市场营销实例
程序实例?~
水污染实例
狐假虎威实例
股票入门
钢琴入门
炒股入门
pp2005入门
炒股入门
吉他入门