BuildJNIwithCustomBuildtool
创始人
2024-12-25 14:00:28
0

使用自定义构建工具构建JNI库

使用自定义构建工具构建JNI库需要进行以下步骤:

1.编写JNI源代码

/* HelloJNI.java */
public class HelloJNI {
   static {
      System.loadLibrary("hello"); // 加载名为hello的动态链接库
   }
 
   private native void sayHello(); // Java本地方法,该方法会调用C/C++实现
 
   public static void main(String[] args) {
      new HelloJNI().sayHello();  // 调用本地方法
   }
}

2.编写JNI头文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class HelloJNI */
 
#ifndef _Included_HelloJNI
#define _Included_HelloJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloJNI
 * Method:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *, jobject);
 
#ifdef __cplusplus
}
#endif
#endif

3.编写C/C++源代码实现JNI头文件中的本地方法

/* HelloJNI.c */
#include 
#include 
#include "HelloJNI.h"
 
JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject thisObj) {
   printf("Hello World!\n");
   return;
}

4.编写Makefile文件

# Makefile for HelloJNI.c
CC=gcc
CFLAGS=-fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
LDFLAGS=-shared
LIBNAME=libhello.so
 
.PHONY: all clean
 
all: $(LIBNAME)
 
$(LIBNAME): HelloJNI.o
    $(CC) $(LDFLAGS) -o $@ $<
 
HelloJNI.o: HelloJNI.c
    $(CC) $(CFLAGS) -c $<
 
clean:
    rm -f HelloJNI.o $(LIBNAME)

5.使用make命令进行构建

make

6.将生成的JNI库(libhello.so)拷贝到Java项目的lib文件夹里,并在Java代码中使用

/* HelloJNI.java */
public class HelloJNI {
   static {
      System.loadLibrary("hello"); // 加载名为hello的动态链接库
   }
 
   private native void sayHello(); // Java本地方法,该方法会调用C/C++实现
 
   public static void main(String[] args) {
      new HelloJNI().sayHello();  // 调用本地方法
   }
}

7.使用Java编译器编译Java代码

javac HelloJNI.java

8.执行Java程序

java HelloJNI

这样就可以在Java中使用JNI库了。

相关内容

热门资讯

科普攻略!德普之星辅助器app... 科普攻略!德普之星辅助器app,we poker辅助器,德州论坛(有挂软件)是一款可以让一直输的玩家...
重大科普!佛手在线大菠萝智能辅... 重大科普!佛手在线大菠萝智能辅助器,wepoker作弊辅助,分享教程(有挂软件);原来确实真的有挂(...
一分钟教会你!wepoker怎... 一分钟教会你!wepoker怎么增加运气,epoker透视,切实教程(有挂透视)1、点击下载安装,微...
六分钟了解!hhpoker有辅... 六分钟了解!hhpoker有辅助吗,wepoker国外版透视,扑克教程(有挂技巧)科技教程也叫必备教...
我来教大家!wepoker辅助... 我来教大家!wepoker辅助透视,wepoker免费脚本弱密码,详细教程(有挂透明);wepoke...
记者发布!wpk辅助,德普之星... 记者发布!wpk辅助,德普之星透视辅助软件激活码,解密教程(有挂辅助);亲真的是有正版授权,小编(透...
揭秘攻略!aapoker万能辅... 《揭秘攻略!aapoker万能辅助器,hhpoker真的假的,揭秘教程(有挂教程)》 aapoker...
重大通报!sohoo poke... 自定义sohoo poker辅助器系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用...
三分钟了解!wpk辅助器,hh... 1、三分钟了解!wpk辅助器,hhpoker免费辅助器,必赢教程(有挂神器);详细教程。2、hhpo...
玩家必看攻略!wejoker私... 玩家必看攻略!wejoker私人辅助软件,智星德州可以透视吗,透明挂教程(有挂技巧)关于智星德州可以...