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里的不一样,好好看看改一下。

使用java调用C语言程序教程相关推荐

  1. JAVA调用C语言程序

    JAVA调用C语言程序 JAVA调用C语言程序 1. 编写带有native声明的方法的Java类 2. 使用javah 生成:jniSample.h的头文件 3. 使用C实现本地sum方法:(这里我生 ...

  2. Java程序调用c语言程序

    Java程序调用自定义c语言程序 计算机中有很多的编程语言,各有各的特色和应用范围.Java混合编程就是Java程序和其它应用程序进行通讯和数据交互,比如我们都知道c语言的计算性能要比Java的略好一 ...

  3. Android系统JNI使用(JAVA调用C语言接口)一

    目录 第一篇:Android系统JNI使用(JAVA调用C语言接口)一 什么是JNI JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信主要是 ...

  4. JAVA调用R语言之Rserve(二)

    之前,我写了一篇文章是java调用R语言之Rserve,但我发现那种方法比较麻烦.后来我发现了一个比较方便的方法,所以今天从又写了一篇博客,来简单说说. 这次我们需要写一个简单的R语言脚本,然后通过运 ...

  5. c语言程序处理数据的基本步骤是,c语言程序教程.doc

    c语言程序教程 c语言程序教程 本文由tyr1235831贡献 ppt文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机查看. C语言程序设计 语言程序设计 2008版 版 1 ...

  6. window与linux环境下,java调用c语言的方法

    windows环境下,java调用c语言的方法 1.环境 C语言编译器:工具比较多,本文使用的是gcc,带gcc的软件业比较丰富,我使用的是TDM-GCC, 注:网上很多使用的是MinGW,但我遇到了 ...

  7. java调用c语言的动态库,hu-unix下面java调用c语言动态链接库.docx

    PAGE / NUMPAGES glddydyzcw HU-unix下面java调用C语言动态链接库我在Hp-unix下面用java JNI怎么调用C语言的动态链接库??System.loadLibr ...

  8. java调用siri 语言_如何更改Siri的声音,口音,性别和语言

    java调用siri 语言 Most of us are familiar with Siri as an American female voice. What you may not realiz ...

  9. python怎么调用c语言_Python调用C语言程序方法解析

    Python调用C语言程序方法解析 首先我们需要将编写好的c程序文件编译为动态库文件(后缀名为.so) 使用下面的命令: gcc 原文件名.c -shared -o 新文件名.so 然后在python ...

最新文章

  1. 毛坯房装修需要哪些材料
  2. Hadoop完全分子式环境搭建—问题及解决办法
  3. cf1555A. PizzaForces
  4. xml配置文件推荐方式
  5. redis事务的简单介绍
  6. jsp是在html里面嵌入哪种代码?_奶茶店铺用哪种制冰机才合适?
  7. php oracle817,Oracle 817 For Linux/Unix安装文档-数据库专栏,ORACLE
  8. 谷歌在外贸中的实战解析
  9. 《scikit-learn》数据预处理与特征工程(三)特征选择
  10. andrew ng 机器学习笔记_所有笔记目录 | 数据分析 | 机器学习 | 深度学习等
  11. 需要使用Git branch switch 的情况Git stash的使用时机
  12. html怎么制作表单,HTML如何制作表单
  13. VC编程中,判断野指针
  14. Windows10中IE11浏览器的修复之路
  15. kux转mp4_QSV、KUX一秒转换成MP4,这两款神器你还不收藏?
  16. can总线程序讲解_详解CAN总线
  17. 魔百盒CM201-2_朝歌ZG_主板版号M8291_强刷固件包
  18. Nacos-注册中心原理解析
  19. 弘辽科技:拼多多补访客资源是什么意思?提升多少个访客合适?
  20. 【青龙面板】天翼云盘签到

热门文章

  1. css如何隐藏div滚动条却又能实现滚动功能?
  2. 表示学习(就是特征)
  3. Centos7 安装 机器学习环境(PIP + Python3.7 + Cython + Jupyter Notebook + Docker + 虚拟机网络环境)
  4. Vue给Input赋值
  5. 2021 绿城杯 wp
  6. The Multimodal Brain Tumor Image Segmentation Benchmark(BRATS)
  7. DC电源插座DC-002特征,DC插座图纸
  8. Android 获取系统壁纸
  9. 最远点采样(Farthest Point Sampling,FPS)算法详解
  10. 查新报告包括什么内容?