Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
可以将native方法比作Java程序同C程序的接口,其实现步骤:
1、在Java中声明native()方法,然后编译;
2、用javah产生一个.h文件;
3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
4、将第三步的.cpp文件编译成动态链接库文件;
5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。
JAVA本地方法适用的情况
1.为了使用底层的主机平台的某个特性,而这个特性不能通过JAVA API访问
2.为了访问一个老的系统或者使用一个已有的库,而这个系统或这个库不是用JAVA编写的
3.为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现。
首先写好JAVA文件
/*
* Created on 2005-12-19 Author shaoqi
*/
package com.hode.hodeframework.modelupdate;
public class CheckFile
{
public native void displayHelloWorld();
static
{
System.loadLibrary("test");
}
public static void main(String[] args) {
new CheckFile().displayHelloWorld();
}
}
然后根据写好的文件编译成CLASS文件
然后在classes或bin之类的class根目录下执行javah -jni com.hode.hodeframework.modelupdate.CheckFile,
就会在根目录下得到一个com_hode_hodeframework_modelupdate_CheckFile.h的文件
然后根据头文件的内容编写com_hode_hodeframework_modelupdate_CheckFile.c文件
#include "CheckFile.h"
#include
#include
JNIEXPORT void JNICALL Java_com_hode_hodeframework_modelupdate_CheckFile_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}
之后编译生成DLL文件如“test.dll”,名称与System.loadLibrary("test")中的名称一致
vc的编译方法:cl -I%java_home%\include -I%java_home%\include\win32 -LD com_hode_hodeframework_modelupdate_CheckFile.c -Fetest.dll
最后在运行时加参数-Djava.library.path=[dll存放的路径]
分享到:
相关推荐
入门$ npm install react-native-image-to-pdf --save 或者$ yarn add react-native-image-to-pdf 大多是自动安装$ react-native link react-native-image-to-pdf 手动安装的iOS 在XCode的项目导航器中,右键单击“ ...
示例项目: : 入门$ yarn add react-native-3d-model-view 进而$ react-native link react-native-3d-model-view lib还具有对等依赖关系react-native-zip-archive , rn-fetch-blob和react-native-fs 。 确保您yarn...
@react-native-community/geolocation Geolocation API扩展了。 当前,在Android上,它使用 。 Google不推荐使用此API,因为它不如推荐的准确和慢。 这是我们希望在不久的将来更改的内容 。 为了将新的与React ...
入门$ npm install git+https://github.com/xtrycatchx/react-native-mlkit-ocr.git --save 大多是自动安装$ react-native link react-native-ml-kit-ocr 手动安装的iOS 在XCode的项目导航器中,右键单击“ ...
这通常涉及在C或C++中编写本地方法,然后在Java中调用该方法来打印消息。此示例展示了如何声明本地方法,如何在本地代码中实现它,以及如何从Java调用本地方法。 #### 类型映射 JNI提供了类型映射机制,将Java数据...
笔记: 对于RN 0.60.0或更高版本,请使用react-native-ssl-pinning@latest入门$ npm install react-native-ssl-pinning --save 大多是自动安装如果您使用的是React Native 0.60.+。 在iOS中运行pod install $ react-...
react-native-wifi-manager 这是用于创建本机WiFi Manager包装器的WIP。 入门 $ npm install react-native-wifi-manager --save 大多是自动安装 $ react-native link react-native-wifi-manager 手动安装 的iOS ...
$ npm install react-native-haptic-feedback --save 或者 $ yarn add react-native-haptic-feedback 连结中 $ react-native link react-native-haptic-feedback $ cd ios && pod install 或手动安装 的iOS
react-native-gpay --save 大部分是自动安装 $ react-native link react-native-gpay :police_car_light: 注意:如果您使用的是 react-native 0.60 或更高版本,则不需要链接 . 手动安装 IOS 在 XCode 中,在项目...
$ npm install react-native-secure-storage --save 或者 $ yarn add react-native-secure-storage 大多是自动安装 $ react-native link react-native-secure-storage 手动安装 的iOS 在XCode的项目导航器中,...
react-native-fs-stream 入门 $ npm install react-native-fs-stream --save 大多是自动安装 $ react-native link react-native-fs-stream 手动安装 的iOS 在XCode的项目导航器中,右键单击“ Libraries ➜ Add ...
6. **第三方库**:熟悉社区中的常用库,如Redux和MobX进行状态管理,react-native-vector-icons添加图标,react-native-image-picker选择图片等。 7. **测试**:了解Jest和Detox等工具,进行单元测试和集成测试,...
react-native-branch模块需要react-native >= 0.40。 纯 React Native 应用程序(使用 react-native 链接) yarn add react-native-branch或npm install --save react-native-branch (可选)将 branch.json 文件...
react-native-tcp-socket 使用客户端SSL / TLS支持对Android,iOS和macOS的本... 由于react-native-tcp-socket提供与Node的net相同的API,因此如果要将此模块导入为net或在JavaScript中使用require('net') ,则必须将
react-native-branch模块需要react-native >= 0.40。 纯 React Native 应用程序(使用 react-native 链接) yarn add react-native-branch或npm install --save react-native-branch (可选)将 branch.json 文件...
react-native-file-viewer 本机文件查看器,用于react-native。 预览移动设备支持的任何类型的文件。 iOS :它使用 Android :它使用ACTION_VIEW Intent启动与指定文件关联的默认应用。 Windows :启动与指定文件...
在6天的学习过程中,你将能够深入理解React Native的核心概念,掌握其工作原理,并最终有能力创建自己的跨平台应用。 React Native的基础始于React.js,这是一个用于构建用户界面的JavaScript库,以其组件化开发...
react-native-branch模块需要react-native >= 0.40。 yarn add react-native-branch (可选)将 branch.json 文件添加到应用项目的根目录。 看 。 react-native link react-native-branch 使用 或 安装本机 Branch ...
帮助文件可以帮助我们理解Java的语法规则、库函数的使用方法等,是学习Java的重要参考资料。 总的来说,JAVA的学习过程需要重视基础知识的掌握,包括Java开发环境的搭建、JDK的使用等。只有掌握了这些基础知识,...
入门确保同时安装react-native-collapsing-toolbar和react-native-nested-scroll-view 。 $ npm install react-native-nested-scroll-view --save $ npm install react-native-collapsing-toolbar --save安装...