• 使用java调用C语言程序教程


    1.idea创建一个java类
    严格来说,核心步骤并不是创建一个java类,而是创建一个方法,那个方法要被native修饰,这才是关键。
    接着在TestNativeCode类当中声明我们的本地方法:

    package com.wwj.nativecode;
    public class TestNativeCode {
    // 声明本地方法
    public native void sayHello();
    public static void main(String[] args) {
    
    // // 加载动态链接库
    
    // System.loadLibrary("nativeCode");
    
    // TestNativeCode nativeCode = new TestNativeCode();
    
    // nativeCode.sayHello();
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    注释掉的代码后面很快会用到,暂时不用管。

    2.通过命令生成.h文件
    在java类所在的文件下cmd,然后输入如下

    javac -h ./ javaConnectC.java(注意:./指的是存在当前目录后边有个空格)
    会生成.class和.h两个文件
    3.再VS里新建项目,选择DLL
    在这里插入图片描述
    在这里插入图片描述

    4.将生成的.h文件以及C:\Program Files\Java\jdk1.8.0_144\include下的jni.h和C:\Program Files\Java\jdk1.8.0_144\include\win32下的jni_md.h一起复制到所创建的VS项目下。然后将这三个.h文件引入。(右击头文件,点击添加,选择现有项,找到复制过来的.h文件选择即可。)
    在这里插入图片描述
    在这里插入图片描述

    5.再源文件dllmain.cpp里复写生成的.h,代码如下

    #include "pch.h"
    #include "com_wwj_nativecode_TestNativeCode.h"
    #include 
    
    JNIEXPORT void JNICALL Java_com_wwj_nativecode_TestNativeCode_sayHello
    (JNIEnv*, jobject){
    	printf("hello");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6.然后生成,这里注意使用release x64

    在这里插入图片描述

    7.在VS文件里找到生成的x64文件夹,在里边有release,然后打开找到.dll文件,将存储.dll文件的路径添加到path路径里。
    在这里插入图片描述
    在这里插入图片描述

    8.在eclipse中使用java调用我们的native代码。

    package jnidemo;
    
    public class TestNativeCode {
    
    // 声明本地方法
    
    public native void sayHello();
    
    public static void main(String[] args) {
    
    // // 加载动态链接库
    
     System.loadLibrary("nativeCode");
    
     TestNativeCode nativeCode = new TestNativeCode();
    System.out.println("dddd");
     nativeCode.sayHello();
    
    }}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    9.运行就可以。
    10.注意会出现一些错误:
    在这里插入图片描述

    运行java项目,如果声明了环境变量之后,没有重启Eclipse会报这样的错:
    在这里插入图片描述

    这个问题是因为我们创建的VS项目,是Win32的平台,而小巫的操作系统是64位的,所以我在Eclipse加载链接库的时候会报错。那么如何来解决这个问题呢,我们需要配置VS编译的平台,我们需要配置为x64位。
    如果还不行,那就是.cpp文件里的方法和对应的.h里的不一样,好好看看改一下。

  • 相关阅读:
    对React fiber的理解
    Java项目:ssm学生综合素质评价系统
    CentOS7 安装redis数据库 问题记录
    KMP中的BuildConfig
    SpringBoot3项目框架搭建
    一键免密登录云平台!ZStack Cloud 4.5.0等你来解锁……
    视频基础知识
    PAT乙级-B1011 A+B 和 C(15)
    Shell脚本攻略:Linux防火墙(二)
    【4. 操作系统—非连续内存分配】
  • 原文地址:https://blog.csdn.net/mlynb/article/details/127609270