我是在32位Ubuntu12.04下做这个测试的, 以下假定已经配置好了JAVA_HOME,CLASSPATH这两个环境变量(绿色的“注”可以不看)
1. 编写NativeTest.java, 代码如下:
public class NativeTest {
/* 声明一个本地(native)函数 */
public native static double max(double a, double b);
static {
/*
* 关于loadLibrary的信息, 摘自 Java2 Platform SE 5 API:
* public static void loadLibrary(String libname), 加载由libname参数指定的系统库。
* 将库名映射到实际系统库的方法取决于系统。
*/
System.loadLibrary("max");
}
public static void main(String[] args) {
System.out.println(max(1.0, 2));
}
}
2. 编译NativeTest.java, 并用javah生成该类对应的C/C++头文件:
javac NativeTest.java
执行上述命令后, 会在当前目录中生成一个名为 NativeTest

本文档详细介绍了在32位Ubuntu12.04上使用JNI进行Java与C/C++交互的步骤。首先编写包含native方法的Java类`NativeTest.java`,然后使用`javah`生成对应的C头文件`NativeTest.h`。接着编写C源文件`max.c`,配置`C_INCLUDE_PATH`和`LD_LIBRARY_PATH`环境变量,并使用`gcc`编译生成动态链接库`libmax.so`。最后,Java程序通过`System.loadLibrary("max")`加载库并实现跨语言调用。
最低0.47元/天 解锁文章

410

被折叠的 条评论
为什么被折叠?



