JNI入门教程

  • 介绍

本文介绍在Linux下实现JNI的一个例子。实验环境为:Ubuntu 11.10,open-jdk-6,gcc 4.6.1

  • 编写调用jni的java类:

  • 使用javac来编译java类

javac -classpath . Hello.java

  • 使用javah来生成C程序对应的头文件Hello.h

javah -classpath . Hello

  • 用C语言编写实现hi函数的代码

  • 编译生成Linux下的动态链接库文件libhi.so

gcc -I$JAVA_HOME/include -I$JAVA_HOME/include/linux -fPIC -shared hi.c -o libhi.so

  • 最后运行命令验证是否成功(输出”hi, boy!”)

java -Djava.library.path=. -classpath . Hello

javap -s java.lang.String

Exception in thread “main” java.lang.UnsatisfiedLinkError: Hello.hi()V

如果在Windows下用gcc编译需要加额外的参数gcc -Wl,–kill-at -shared -hi.c -o hi.dll

如果在64位系统上编译so库的话,需要在configure的时候加参数:CFLAGS=”-O3 -fPIC” ./configure

  • 如何在Windows环境下使用Eclipse(CDT)来查看C源代码

需要添加如下环境变量:

LIBRARY=
C_INCLUDE_PATH=
  • 参考

发表评论

电子邮件地址不会被公开。 必填项已用*标注