JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)

便想,既然底层用的C,那为什么还能跨平台(现在感觉跨平台这个特性其实已经不怎么用了),一想高斯林老爷子用了一个JVM,这样只要不同操作系统对应的JVM里有相应的方法实现就可以了。

然后准备写一个 JNI HelloWorld:

public class HelloWorld {public native void displayHelloWorld();//所有native关键词修饰的都是对本地的声明static {System.loadLibrary("hello");//载入本地库}public static void main(String[] args) {new HelloWorld().displayHelloWorld();}
}

没想到Javac HelloWorld.java 竟然报错:

J:\MAKER\Java源码\JNI尝试>javac Helloworld.java
Helloworld.java:2: error: unmappable character for encoding GBKpublic native void displayHelloWorld();//鎵?鏈塶ative鍏抽敭璇嶄慨楗扮殑閮芥槸瀵规湰鍦扮殑澹版槑^
Helloworld.java:4: error: unmappable character for encoding GBKSystem.loadLibrary("hello");//杞藉叆鏈湴搴?^
Helloworld.java:1: error: class, interface, or enum expected
锘縫ublic class HelloWorld {
^
3 errors

HelloWorld.java是以UTF-8格式编码的,windows在中国用的是GBK编码,(用Windows建立一个文本文档,其默认字符集就是GBK),因此出现的编码错误

关于编码请看:https://blog.csdn.net/cszhang570221322/article/details/84786918

以ASCII拓展码保存后,再编译:

javah HelloWorld 生成.h文件

HelloWorld.h文件的内如:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/** Class:     HelloWorld* Method:    displayHelloWorld* Signature: ()V*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif

这个h文件相当于java里的接口,声明了一个Java_HelloWorld_displayHelloWorld(JNIEnv *,jobject) 方法;

然后我们用C编写这个方法的实现: HelloWorldImpl.cpp

这时候用VC新建一个dll工程:

将HelloWorld.h和HelloWorldImpl.c 文件移入:

然后需要将引用库引入项目路径:

然后还报找不到jni.h错误,这是因为#include<jni.h>这个是从系统目录中查找jni.h头文件的,而我们只把jni.h拷贝到工程目录中,所以需要将<jni.h> 改为 "jni.h"

此时要记得java是64位的,也要编译64位的dll文件。

此时该有的都有了,如果用vc6不行的话,现在大家都用vs20xx,教程移步:http://jingyan.baidu.com/article/380abd0a4640171d90192c9e.html

他还报错: 

需要下载 对应64位的<DLL依赖查看工具> 怪不得windows需要装那么多复杂的运行库。

运行发现少那么多dll文件,

没得办法,我一个个下载。

惊喜的是,我在下载了

这两个dll之后,虽然还有?的dll依赖,但竟然运行成功了。

正准备用那个国外的dll修复工具一个个修复呢? 链接如下: http://dl2.3dmgame.com/akuka/3DMGAME-dllcare.v1.0.0.2266.cn.ban.rar   https://dl.3dmgame.com/patch/121375.html这个是破解教程

另外 :http://www.zhaodll.com/ 这个网站下载dll还是不错的。

JNI HelloWorld 亲测可以。相关推荐

  1. Android FFmpeg移植总攻略——获取视频帧数(亲测可用)

    第一次尝试使用Android 移植FFmpeg算法,一路坎坷,最终做如下总结,适用于Android手机.Android开发板.亲测可用. 一.下载组件 在Android Studio中下载所需组件:C ...

  2. Cocos2d-x win7 + vs2010 配置图文详解(亲测)

    Cocos2d-x win7 + vs2010 配置图文详解(亲测) 下载最新版的cocos2d-x.打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为coc ...

  3. Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本的开发环境(亲测)

    转至 http://blog.csdn.net/ccf19881030/article/details/9204801   写这篇博客时2D游戏引擎Cocos2d-x的最新版本为2.1.4,记得很久以 ...

  4. Android开发实战一之搭建开发环境-附测试实例(已亲测)

    使用JDK.Android SDK.Eclipse + ADT搭建开发环境      附测试实例     (已亲测) ----------------------------------------- ...

  5. Windows下命令行及Java+Tesseract-OCR对图像进行(字母+数字+中文)识别,亲测可行

    Windows下Java+Tesseract-OCR对图像进行字符识别,亲测可行 1. 下载tesseract-ocr.中文语言包并安装 2. 命令行对图片进行识别及效果图 3. Java调用Tess ...

  6. Echarts读取本地json文件渲染轨迹,亲测ok

    Echarts读取本地json文件渲染轨迹,亲测ok 1. 报错及解决 2. 效果图 3. 源码lines-track.html如下 参考 1. 报错及解决 报错:由于浏览器的同源策略 已拦截跨源请求 ...

  7. Java调用python打包的程序.exe,包括获取exec()中打印的日志,亲测有效

    python写了一个方法,windows平台上怎么被Java服务调用呢? 最简单的办法,python利用pyinstaller打包成.exe程序,Java程序通过Process调用,想同时获取.exe ...

  8. centos7.4.3 部署python-pcl亲测可用(采坑记)

    最近工作里用到PCL库,处理点云数据.点云抽稀能极大的减少点云数据. 通过python-pcl调用C++的PCL库.windows下运行ok,linux下部署踩了很多坑,试了多种办法,包括源码安装,都 ...

  9. 每日起床前做这五个动作,可保障你终身不感冒——奥运福娃设计师韩美林老师亲测可用

    1.醒来后第一件事不是起身,先在床上躺着伸懒腰→四肢拉直了→让经脉拉直了(来回拉三四次) 2.然后做下图的姿势,侧卧→抱膝→弯曲→膝盖顶住胸部→吐气,把所有体内的浊气吐出 3.然后坐起来,双手在脸上的 ...

最新文章

  1. PTA 基础编程题目集 7-6 混合类型数据格式化输入 C语言
  2. [转载]使用RoboCopy 命令
  3. Kafka深入理解-2:Kafka的Log存储解析
  4. Objective-c 异步发送Post请求的工具类
  5. vim的配置安装和Python安装细节记录20190109
  6. 微服务架构基础之Service Mesh
  7. ML《集成学习(三)Boosting和Adaboosting回归树》
  8. 在Intellij idea 中YAML文件出现代码提示
  9. 拼多多api接口php算法,PHP 调用 拼多多 API 模板
  10. // 产生10到100随机数
  11. 【java学习之路】(mysql篇)003.mysql中limit、表的创建、删除、约束
  12. 8.2 知识蒸馏 讲解 意境级
  13. Neo4j介绍与使用
  14. 我发现混的好的,都是挺能“吹牛逼”的
  15. java毕业设计小区停车场管理系统mybatis+源码+调试部署+系统+数据库+lw
  16. 决策支持系统(DSS)
  17. 基于单片机的脉搏心率远程监测
  18. 肯德尔系数怎么分析_SPSS统计案例笔记16:相关分析之kendall系数
  19. C语言实现稳定的快排
  20. Eclipse安装Kotlin插件后,新建找不到Kotlin文件

热门文章

  1. 游戏蓝牙耳机哪款好用?低延迟游戏蓝牙耳机推荐
  2. Docker容器内部无法访问外网原因之一
  3. 百度在北京和深圳主攻腾讯 新浪等一些IM公司,大力挖人,甚至爆出15w-20w年薪,有人士对百度的行为做出以下分析:
  4. 1.19(Cake Baking)
  5. AppOps命令分析
  6. C++ 11字符数组/字符串/数字转换/字符串拼接
  7. 服务器ssd硬盘接笔记本,M.2固态硬盘怎么安装 台式机与笔记本电脑安装M.2 SSD方法图解...
  8. 快手小说怎么引流?门槛太低,是个人就能做
  9. java读取word文件并设置其字体样式_Java读取word文件,字体,颜色(示例代码)
  10. Webpack:Loader学习—— Pitching Loader