技术标签: Java_积累版 java jni native
1.书写一个Java类
public class HelloWorld {
// 使用关键字native来声明方法
public native void displayInfor(String name);
// 加载动态链接库
static {
System.load("/Users/mac/Desktop/HelloWorldImpl.dylib");
}
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.displayInfor("冯强");
}
}
其中public native void displayInfor(String name);,声明了一个本地方法,有参数name,返回类型void。
System.load(“/Users/mac/Desktop/HelloWorldImpl.dylib”);表示加载一个本地动态链接库。
2.使用下javac命令编译该文件:
Macs-MacBook-Pro:Desktop mac$ javac HelloWorld.java
我们会看到生成了一个HelloWorld.class文件
3.使用javah命令处理HelloWorld.class文件
Macs-MacBook-Pro:Desktop mac$ javah -jni HelloWorld
这时候我们可以看到生成了一个HelloWorld.h文件:
4.打开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: displayInfor
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayInfor
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
其中:
JNIEXPORT void JNICALL Java_HelloWorld_displayInfor
(JNIEnv *, jobject, jstring);
就是Java代码中对应的native方法,命名格式是 Java_类名_方法名(JNIEnv,jobject,这里是参数)。
5.修改HelloWorld.h文件中的#include
// 引入刚刚通过class文件生成的.h文件
#include "HelloWorld.h"
#include <stdio.h>
#include <iostream>
using namespace std;
/*
* Class: HelloWorld
* Method: displayInfor
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayInfor
(JNIEnv * env, jobject obj, jstring name) {
cout<<"你好,"<<env->GetStringUTFChars(name, NULL)<<endl;
}
8.使用g++处理HelloWorld.cpp生成动态链接库
Macs-MacBook-Pro:Desktop mac$ g++ -dynamiclib -o HelloWorldImpl.dylib HelloWorld.cpp
9.复制HelloWorldImpl.dylib文件的地址,放入到java文件中
System.load("/Users/mac/Desktop/HelloWorldImpl.dylib");
10.最终的文件如下:
11.运行Java程序
Macs-MacBook-Pro:Desktop mac$ java HelloWorld
你好,冯强
关注下方公众号,回复:jni.code
欢迎加入交流群:451826376
更多信息:www.itcourse.top
uniapp 实现搜索使得搜索字体变颜色
一、安装PHP1、先安装如下依赖包yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl cu
3dmax:3dmax三维动画之材质/渲染设置的简介、经典案例之详细攻略目录3dmax三维动画之材质/渲染设置的简介、经典案例3dmax三维动画之材质/渲染设置的简介3dmax三维动画之材质/渲染设置的经典案例3dmax三维动画之材质/渲染设置的简介、经典案例3dmax三维动画之材质/渲染设置的简介3dmax三维动画之材质/渲染设置的经典案例...
使用C++(MFC)操作数据库,首选就是ADO。ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。在MFC要使用ADO(COM)首先要引用COM地址,编译器才能够实现。从网上的很多资料都介绍,将EOF重命名,防止和其他冲突,那偶们也这样做反正也不会有坏处。格式如下:#include #import "c:\program
1.新建Python项目使用QtDesigner设计界面使用PyUIC把设计的界面转换成py文件编写业务代码和Ui文件结合起来SetTextStyleMainWindow.pyimport sysfrom SetTextStyle import Ui_SetTextStylefrom PyQt5.QtWidgets import QMainWindow, QApplication, QCheckBox, QSpinBoxfrom PyQt5.QtGui import QPen, QPal_1671465600
目录1.1 矩阵的定义.. 11.2 矩阵的运算.. 2矩阵相加.. 2数乘矩阵.. 3矩阵相乘.. 3矩阵的幂.. 5矩阵转置.. 6伴随矩阵.. 6矩阵的逆.. 7分块矩阵.. 7矩阵法看克拉姆法则.. 8延展.. 8矩阵与行列式对比.. 8矩阵运算综合.. 9线性代数之矩阵基础点 矩阵的定义 由m乘n个数aij(i∈[1,m], j∈[1,n],i、j∈Z)排成的m行n列数表记作矩阵...
一、前言 Hull Shader是舞台工作三个阶段的第一个阶段,可以实现tessellation, Hull Shader transforms将一组输入控制点 转化为 输出控制点,输入、输出点的数量根据转换内容和数量而变化二、设计Hull shader三、通过ID3D11Device::CreateHullShader创建hull-shader对象 HRESULT CreateHullShader( ...
英文原址:http://www.risc.jku.at/people/ckoutsch/stuff/e_algorithms.html 奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多
Zabbix常用item汇总及说明2018.5Zabbix中内置了很多监控参数(Key_),可以获取监控对象中的系统、CPU、网络、内存、文件系统等信息。下面就详细介绍一下这些监控参数的意义。1. 测试获取监控参数内容的方法在Zabbix Server上使用zabbix_get命令可以从监控对象获取监控参数的具体内容。zabbix_get命令的具体使用方法如下:zabbix_get -s 目标...
主要有语言智能、数学逻辑智能、空间智能、身体运动智能、音乐智能、人际智能、自我认知智能、自然认知智能。 八十年代,美国著名发展心理学家、哈佛大学教授霍华德·加德纳博士提出多元智能理论,二十多年来该理论已经广泛应用于欧美国家和亚洲许多国家的幼儿教育上,并且获得了极大的成功。霍华德·加德纳博士指出,人类的智能是多元化而非单一的,主要是由语言智能、数学逻辑智能、空间智能、身体运动智能、音乐智能、人
数字图像基础图像取样与量化图像的质量层次:对比度像素间的基本关系(考)图像取样与量化取样:图像空间坐标的离散(空间坐标(x,y)的数字化)量化:图像函数值(灰度值、幅度值)的离散、量化编码采样间隔(减小)决定了图像的空间分辨率(增加)采样间隔越大,所得图像像素数越少,空间分辨率低,质量差,严重时出现马赛克效应;采样间隔越小,所得图像像素数越多,空间分辨率高,图像质量好,但数据量大。量化编码长度(增加)决定灰度分辨率(增加)显示分辨率越大越清楚图像的质量层次:1.灰度级:像素的取值范围为
在Linux下,使用SSD为HDD加速,目前较为成熟的方案有:flashcache,enhanceIO,dm-cache,bcache等,多方面比较以后最终选择了bcache。 bcache 是一个 Linux 内核块层超速缓存。它允许使用一个或多个高速磁盘驱动器(例如 SSD)作为一个或多个速度低得多的硬盘的超速缓存。bcache 支持直写和写回,不受所用文件系统的约束。默认情况下,它只超速缓存...