在Windows平台借助cmake编译jni

Posted zhangmingcsdn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows平台借助cmake编译jni相关的知识,希望对你有一定的参考价值。

依赖

  1. jdk
  2. visual studio(只需安装 cl 即可)

(备注:我使用的是Visual Studio Code作为代码编辑工具,当然也可以使用txt或vim等其它文本编辑工具)

步骤

  1. 创建Java类文件
  • mkdir projectDir & cd projectDir
  • mkdir java & cd java
  • mkdir simen & cd simen //simen为包名
  • vim Test.java
package simen;

import java.nio.file.FileSystems;

public class Test

    static
        System.load(
                    FileSystems.getDefault()
                            .getPath("./build/Debug/jnitests.dll")  // Dynamic link
                            .normalize().toAbsolutePath().toString());
    

    public static void main(String[] args)
        System.out.println("Test"+testVal());
    

    public static native int testVal();

  • cd … //回到java目录
  • javac simen\\Test.java
  1. 创建jni文件
  • javah simen.Test //生成simen_Test.h文件
  • vim simen_Test.cpp
#include "simen_Test.h"

JNIEXPORT jint JNICALL Java_simen_Test_testVal
  (JNIEnv *, jclass)
      return 1;
  
  1. 创建CMakeLists.txt
  • vim CMakeLists.txt
cmake_minimum_required(VERSION 2.8)

project(JniExample)

set(CMAKE_BUILD_TYPE Release)

find_package(JNI REQUIRED)

include_directories($JNI_INCLUDE_DIRS)

set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -std=c++11")

set(SOURCE_FILES simen_Test.cpp)

add_library(jnitests SHARED $SOURCE_FILES)
  1. 编译生成 jnitests.dll
  • mkdir build & cd build
  • cmake …
  • cd CMakeFiles
  • cmake --build …
  1. 运行Test类
  • cd ProjectDir\\src\\main\\java
  • java simen.Test -DC:\\
    (备注 C:\\ 为运行目录,java程序需要)

示例项目

源码链接: https://pan.baidu.com/s/1PmSFBwtzKKMwwDfGbAQRVg 提取码: xsjb

以上是关于在Windows平台借助cmake编译jni的主要内容,如果未能解决你的问题,请参考以下文章

JNI

cmake 在Windows 命令行怎么指定编译器

JNI_2

Windows下的 C++ 编译工具(MinGW-w64 + CMake)

Windows系统下安装 CMake

Android-JNI开发系列《八》CMakeLists.txt语法&使用