JNI HelloWorld 亲测可以。
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 亲测可以。相关推荐
- Android FFmpeg移植总攻略——获取视频帧数(亲测可用)
第一次尝试使用Android 移植FFmpeg算法,一路坎坷,最终做如下总结,适用于Android手机.Android开发板.亲测可用. 一.下载组件 在Android Studio中下载所需组件:C ...
- Cocos2d-x win7 + vs2010 配置图文详解(亲测)
Cocos2d-x win7 + vs2010 配置图文详解(亲测) 下载最新版的cocos2d-x.打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为coc ...
- Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本的开发环境(亲测)
转至 http://blog.csdn.net/ccf19881030/article/details/9204801 写这篇博客时2D游戏引擎Cocos2d-x的最新版本为2.1.4,记得很久以 ...
- Android开发实战一之搭建开发环境-附测试实例(已亲测)
使用JDK.Android SDK.Eclipse + ADT搭建开发环境 附测试实例 (已亲测) ----------------------------------------- ...
- Windows下命令行及Java+Tesseract-OCR对图像进行(字母+数字+中文)识别,亲测可行
Windows下Java+Tesseract-OCR对图像进行字符识别,亲测可行 1. 下载tesseract-ocr.中文语言包并安装 2. 命令行对图片进行识别及效果图 3. Java调用Tess ...
- Echarts读取本地json文件渲染轨迹,亲测ok
Echarts读取本地json文件渲染轨迹,亲测ok 1. 报错及解决 2. 效果图 3. 源码lines-track.html如下 参考 1. 报错及解决 报错:由于浏览器的同源策略 已拦截跨源请求 ...
- Java调用python打包的程序.exe,包括获取exec()中打印的日志,亲测有效
python写了一个方法,windows平台上怎么被Java服务调用呢? 最简单的办法,python利用pyinstaller打包成.exe程序,Java程序通过Process调用,想同时获取.exe ...
- centos7.4.3 部署python-pcl亲测可用(采坑记)
最近工作里用到PCL库,处理点云数据.点云抽稀能极大的减少点云数据. 通过python-pcl调用C++的PCL库.windows下运行ok,linux下部署踩了很多坑,试了多种办法,包括源码安装,都 ...
- 每日起床前做这五个动作,可保障你终身不感冒——奥运福娃设计师韩美林老师亲测可用
1.醒来后第一件事不是起身,先在床上躺着伸懒腰→四肢拉直了→让经脉拉直了(来回拉三四次) 2.然后做下图的姿势,侧卧→抱膝→弯曲→膝盖顶住胸部→吐气,把所有体内的浊气吐出 3.然后坐起来,双手在脸上的 ...
最新文章
- PTA 基础编程题目集 7-6 混合类型数据格式化输入 C语言
- [转载]使用RoboCopy 命令
- Kafka深入理解-2:Kafka的Log存储解析
- Objective-c 异步发送Post请求的工具类
- vim的配置安装和Python安装细节记录20190109
- 微服务架构基础之Service Mesh
- ML《集成学习(三)Boosting和Adaboosting回归树》
- 在Intellij idea 中YAML文件出现代码提示
- 拼多多api接口php算法,PHP 调用 拼多多 API 模板
- // 产生10到100随机数
- 【java学习之路】(mysql篇)003.mysql中limit、表的创建、删除、约束
- 8.2 知识蒸馏 讲解 意境级
- Neo4j介绍与使用
- 我发现混的好的,都是挺能“吹牛逼”的
- java毕业设计小区停车场管理系统mybatis+源码+调试部署+系统+数据库+lw
- 决策支持系统(DSS)
- 基于单片机的脉搏心率远程监测
- 肯德尔系数怎么分析_SPSS统计案例笔记16:相关分析之kendall系数
- C语言实现稳定的快排
- Eclipse安装Kotlin插件后,新建找不到Kotlin文件
热门文章
- 游戏蓝牙耳机哪款好用?低延迟游戏蓝牙耳机推荐
- Docker容器内部无法访问外网原因之一
- 百度在北京和深圳主攻腾讯 新浪等一些IM公司,大力挖人,甚至爆出15w-20w年薪,有人士对百度的行为做出以下分析:
- 1.19(Cake Baking)
- AppOps命令分析
- C++ 11字符数组/字符串/数字转换/字符串拼接
- 服务器ssd硬盘接笔记本,M.2固态硬盘怎么安装 台式机与笔记本电脑安装M.2 SSD方法图解...
- 快手小说怎么引流?门槛太低,是个人就能做
- java读取word文件并设置其字体样式_Java读取word文件,字体,颜色(示例代码)
- Webpack:Loader学习—— Pitching Loader