JNI之helloworld

JNI入门教程:最小环境HelloWorld实战 JNI是Android应用开发中不太常涉及的技术,但在Framework层中却被广泛使用。作为一名Android应用开发人员,学习JNI知识,对理解整个系统原理还是有很大帮助的。 学习JNI有很多途径: 可以直接阅读Framework源码。这种方案不太好上手验证,因为Framework代码要配置的编译环境还是比较复杂的,而且编译后没法直接运行测试,需要Root系统 其次也可以下载安装NDK,直接在Android Studio里开发项目。这种方式也有比较多的环境配置工作,并且操作起来比较麻烦。 因此这篇文 阅读详情

如题,如下

1,创建java项目,创建class HelloWorld

<pre name="code" class="java">package com.min;

public class HelloWorld {

	public native void displayHelloWorld();
	public native int max(int a, int b);
	
	static {
        System.loadLibrary("JNIHelloWorld");
    }
	
	public void mydisplay(){
		System.out.println("mydisplaylllllll");
	}
	
	public static void main(String[] args) {
		HelloWorld myh = new HelloWorld();
		myh.mydisplay();
		try {
			myh.displayHelloWorld();
			int maxnumber = myh.max(3,5);
			System.out.println(maxnumber);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
		//.displayHelloWorld();
		return;
	}

}



2,生成.h文件,cmd到目录bin下,javah -jni com.min.HelloWorld  生成com_min_HelloWorld.h

3,vs创建c++ dll项目

<pre name="code" class="cpp">#include <stdio.h>
#include "jni.h"
#include "D:\work\javaWorkSpace\JNIHelloWorld\bin\com_min_HelloWorld.h"


// #ifdef JNIHELLOWORLD_EXPORTS
// #define JNIEXPORT __declspec(dllexport)
// #else
// #define JNIEXPORT __declspec(dllimport)
// #endif

// extern "C" __declspec(dllexport) void myprint()
// {
// 	printf("myPrint");
// 	return;
// }

 
 void JNICALL Java_com_min_HelloWorld_displayHelloWorld
	(JNIEnv *, jobject)
{
	printf("my JNI hellowrold!");
	return;
}

 JNIEXPORT jint JNICALL Java_com_min_HelloWorld_max
	 (JNIEnv *, jobject, jint a, jint b)
 {
	 return a>b?a:b;
 }




注意,要include相应的jni文件   C:\Program Files\Java\jdk1.8.0_25\include\win32  C:\Program Files\Java\jdk1.8.0_25\include

还要注意,如果jdk是64位的(java -version可以看到),那么vs项目要使用x64编译

然后生成JNIHelloWorld.dll文件

4,拷贝dll到java项目中,可以新建一个目录mydllLib,放进去,然后eclipse中选中 项目属性-java build path-library-JRE system library- Native library, 然后 Edit,将mydllLib目录填进去

5,可以了,运行

mydisplaylllllll
5
my JNI hellowrold!





注: 这里补充说明一点,如果要调用第三方库(third.dll),那么third.dll 要放在项目.project 同一目录下

Android JNI初识 HelloWorld 完成上述步骤就已经配置好了NDK,我们来看看比一般的项目多了哪些东西.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ELqGtcOA-1572240983910)(http://olg7c0d2n.bkt.clouddn.com/18-9-20/55579079.jpg)] 阅读详情

相关推荐

JNI入门之HelloWorld(一)

JNI入门学习第一篇:HelloWorld,主要是介绍操作步骤。

Android JNI学习(二)——实战JNI之“hello world”

JNI,全称为Java Native Interface,即Java本地接口,JNI是Java调用Native 语言的一种特性。通过JNI可以使得Java与C/C++机型交互

Jason_Lee155的博客 1332

jni-helloWorld

参考百度百科的入门demo,并对本机运行时出现的错误进行描述,相关的解决办法也注明了出外。下载后请先行阅读readme.txt

JNI入门教程之HelloWorld篇

   本文讲述如何使用JNI技术实现HelloWorld,目的是让读者熟悉JNI的机制并编写第一个HelloWorld程序。     Java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分。在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。标准的java类库没有提供你的应

mingjava的专栏 9万+

QDMA工程搭建/windows驱动编译与性能测试

请注意,根据您的目标操作系统,您可能需要在windows启动配置中启用测试签名的驱动程序,以便启用此驱动程序的安装。右键单击设备,选择更新驱动程序软件,然后选择构建的QDMA驱动程序的文件夹(通常为。创建一个新工程,在IP Catalog中搜索QDMA,双击创建qdma ip核。驱动程序安装安装驱动程序最简单的方法是通过Windows的“设备管理器”。如果系统提示未经验证的驱动程序发布者,请选择无论如何安装此驱动程序软件。本节主要介绍QDMA驱动在Windows系统的源文件、编译和安装过程。

qq_28455081的博客 2287

Rockchip rv1126平台在gstreamer1中添加OpenCv实现视频流负片的效果

rv1126 gstreamer opencv negetive effect

Aisy_D的专栏 1463

JNI之HelloWorld

JNI是java native interface的缩写,JNI是一个标准编程接口,用于编写java本地方法并嵌入虚拟机至本地应用程序的。它的主要目的是为了在给定平台上通过所有java虚拟机的本地二进制方法实现的兼容性。 环境与工具 clion idea jdk8 MinGW 编写一个自己的native方法接口与实现 编写native方法 /** * @author 会灰翔的灰机 * @d...

阿呆的专栏 894

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 285

JNI的使用(以输出HelloWorld为例)

先说一下什么是JNI。JNI是Java Native Interface的缩写,中文为JAVA本地调用。JNI允许Java代码和其他语言写的代码进行交互。 以HelloWorld为例。 1、首先写Hello.java public class Hello {  public native void displayHelloWorld();//对本地的声明    static {   S

gaboolic的专栏 1032

京东风控算法工程师带你解读Action Model-精细化运营(上篇)

电影《蝴蝶效应》中,男主拥有回到童年改变过去的能力,虽然在剧中男主一次次穿越时空拯救世界,但由于他无法预见自己做出的抉择对未来产生的其他影响,最终还是没能阻止悲剧的发生。可见,一个好的决策需要衡量其对未来产生的影响。JDD风控算法团队本期为大家解惑最优决策难题的解决方法-Action Model。

JDD风控算法的博客 1916

Appstore开发者必读:3.2(f)违规预警与高效申诉指南

本文为AppStore开发者提供了应对3.2(f)违规通知的完整指南。文章深度解析了3.2(f)条款下的隐瞒性、关联性与真实性违规类型,并提供了黄金48小时内的自查、申诉信撰写与提交全流程策略。同时,文章强调遵循App Review Guidelines,建立内部合规清单与保持账号独立,是预防违规、维护开发者账号安全的关键。

weixin_29214559的博客 272

Android Jni之Helloworld

本文将讲述Android jni的开发环境搭建和hello word的生成

Okloong的博客 479

【四足机器人项目实战】四足机器人嵌入式硬件设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、电源管理板设计及制作二、通讯中继板设计及制作三、力控无刷电机驱动板设计及制作1.磁场定向控制FOC控制原理2.电机转子位置、速度检测原理3.硬件CAN通讯原理 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人–嵌入式硬件设计做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、电

qq_35635374的博客 1万+

java jni helloword_JNI入门教程之HelloWorld篇

JNI入门教程之HelloWorld篇来源:互联网宽屏版评论2008-05-31 09:07:11本文讲述如何使用JNI技术实现HelloWorld,目的是让读者熟悉JNI的机制并编写第一个HelloWorld程序。java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分。在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能...

weixin_35908791的博客 393

【FPGA教程案例37】通信案例7——基于FPGA的FFT,IFFT傅里叶变换和逆变换

关于FFT和IFFT的相关描述,在上一课程我们已经有所了解,本课程不再重复。在上一课程,我们初步掌握了如何通过FFT对输入信号进行频谱分析,在本课程,我们将学习如何通过FPGA实现FFT和IFFT得到初始信号的过程。关于FFT的IP核配置,和上一课程相同。下面直接介绍其verilog调用过程。我们可以看到,IFFT的配置非常简单,在FFT的基础上,只需要将该参数的最后一位改为0,就可以实现IFFT变化。下面我们通过testbench文件,同时调用FFT和IFFT实现信号的傅里叶变换和逆变换。......

FPGA/MATLAB学习教程/源码/项目合作开发 4517

整理 钢琴 约翰·汤普森现代钢琴(大汤)

大汤

TS的博客 3997

android jni——helloworld

看了网上好多牛人写的学习系列都是用HelloWorld作为开始,我们这里也用HelloWorld来开始我们的学习,首先我们来介绍下JNI吧。 JNI作为java代码和C/C++的桥梁而存在的,为了让java代码更加接近原生代码,大家都知道在linux中,C语言可以直接访问硬件,但是java代码想要直接操作硬件或者说是直接读写寄存器的话不行,所以需要jni来作为桥梁来访问更底层的东西。

黄俊东的专栏 1924

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java 通过 JNI 调用 C 之一 HelloWorld 入门

凤姐:杰,我是你的什么 杰伦:凤,你是我的 JNI 捧在手心,暖暖的,连接你我他,连接java和c++

棺材深處 1678

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android Studio中使用JNI 把初夜送给HelloWorld

AndroidStudio玩JNI,比在eclipse简单十倍左右。不需要那些繁琐的配置。NDK也可以直接下到 一、建项目 相比平时建项目,多勾选一个,如图:   代表包含 C++支持。一路next下去,到最后一步,会有个比平时多一个步骤如图,选择C++11: 二、观察项目下载插件 NDK,CMake: clean项目。 三、写C++代码,当然,我们Andr

hycfire的博客 566

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JNI入门 一个JNI的HelloWorld 程序

 JNI是java本地编程接口。是 Java Native Interface 的英文缩写。他能够使java代码与用其他编程语言编写的应用程序和库进行互操作。(其他编程语言大多是c,c++和汇编语言。) 下面来写一个间的HelloWorld程序。 首先启动Eclipse 新建一个java工程:新建一个class 注意:必须在类中声明一个n

小武的专栏 732

Android移植---JNI中HelloWorld的C和C++实现

MainActivity.java package com.example.jniload; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.TextView; public class MainActivity extends A

yasinEmb的专栏 2339

android jni编程详解,基于Android studio3.6的JNI教程之helloworld思路详解

jdk环境变量配置:path中增加下面2个路径,也就是android studio的路径,android有自带的jdk。E:\Android\Android Studio\jre\binE:\Android\Android Studio\bin新建工程:一定要选择Native c++类型,最后要选c++11支持。SDK设置:File->SettingsFile->Project Str...

weixin_33503998的博客 207

JNI实现简单HelloWorld的Demo

JNI实现简单HelloWorld的Demo功能:利用JNI接口调用C++中实现的HelloWorld!环境:VS2013、Eclipse步骤:​ 1) 完成Java代码,编写好Java调用类package com.sample.test;public class HelloWorld { public static void main(String[] args) {

云谁之殇的专栏 663
上一篇: socket通信简介
下一篇: 自己写一个简单的定时器settimer
mincheat
博客等级 码龄17年 46粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值