JAVA简单调用C/C++语言(JNI学习一)
程序都是从hello world开始的,写一个简单的demo,java里调用c语言的方法输出一句hello world。 第一:首先实现一个java类:com.zhaoyanblog.Demo package com.zhaoyanblog; public class Demo { static{ System.loadLibrary("demo"); } public static void main(String[] args) { Demo demo = new Demo(); demo.printHelloWord(); } public native void printHelloWord(); } 声明为native的方法,jvm会主动从加载的library中对应寻找。 System.loadLibrary就是用于加载c语言编译的库文件。 在linux下面lib库文件的命名默认是: lib+{name}+.so java会到环境变量java.library.path对应的目录下寻找并加载。 第二: 编写c/c++语言部分 使用javah得到c/c++对应的头文件, 在com目录的父目录下执行 javah -jni javah -jni com.zhaoyanblog.Demo 会产生一个头文件 com_zhaoyanblog_Demo.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class com_zhaoyanblog_Demo */ #ifndef _Included_com_zhaoyanblog_Demo #define _Included_com_zhaoyanblog_Demo #ifdef __cplusplus extern "C" { #endif /* * Class: com_zhaoyanblog_Demo * Method: printHelloWord * Signature: ()V */ JNIEXPORT void JNICALL Java_com_zhaoyanblog_Demo_printHelloWord (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif 根据头文件完成源文件com_zhaoyanblog_Demo.cc ...