使用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();
}
}

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

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 <iostream>

JNIEXPORT void JNICALL Java_com_wwj_nativecode_TestNativeCode_sayHello
(JNIEnv*, jobject){
    
    
	printf("hello");
}

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();

}}

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

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

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

猜你喜欢

转载自blog.csdn.net/mlynb/article/details/127609270