原文地址:http://www.enet.com.cn/article/2007/1029/A20071029886398.shtml
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的项目导航器中,右键单击“ ...
这通常涉及在C或C++中编写本地方法,然后在Java中调用该方法来打印消息。此示例展示了如何声明本地方法,如何在本地代码中实现它,以及如何从Java调用本地方法。 #### 类型映射 JNI提供了类型映射机制,将Java数据...
转到node_modules react-native-wifi-manager并添加RNWifiManager.xcodeproj 在XCode的项目导航器中,选择您的项目。 将libRNWifiManager.a添加到项目的Build Phases ➜ Link Binary With Libraries 运
react-native-ml-kit-ocr ...Add Files to [your project's name] 转到node_modules react-native-ml-kit-ocr并添加RNMlKitOcr.xcodeproj 在XCode的项目导航器中,选择您的项目。 将libRNMlKitOcr.a添加到项目的Buil
在iOS中运行pod install $ react-native link react-native-ssl-pinning 手动安装的iOS 在XCode的项目导航器中,右键单击“ Libraries ➜ Add Files to [your project's name] 转到node_modules react-native-ssl-...
示例项目: : 入门$ 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 ...
React本机安全存储 ... 转到node_modules react-native-secure-storage并添加RNSecureStorage.xcodeproj 在XCode的项目导航器中,选择您的项目。 将libRNSecureStorage.a添加到项目的Build Phases
react-native-gpay --save 大部分是自动安装 $ react-native link react-native-gpay :police_car_light: 注意:如果您使用的是 react-native 0.60 或更高版本,则不需要链接 . 手动安装 IOS 在 XCode 中,在项目...
转到node_modules react-native-fs-stream并添加RNFsStream.xcodeproj 在XCode的项目导航器中,选择您的项目。 将libRNFsStream.a添加到项目的Build Phases ➜ Link Binary With Libraries 运行您的项目( Cmd+R ...
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的本机TCP套接字API进行React。 它允许您创建TCP客户端和服务器套接字,以模仿Node的API功能(有关更多信息,请参见可用的 )。 目录 SSL...
react-native-branch模块需要react-native >= 0.40。 纯 React Native 应用程序(使用 react-native 链接) yarn add react-native-branch或npm install --save react-native-branch (可选)将 branch.json 文件...
帮助文件可以帮助我们理解Java的语法规则、库函数的使用方法等,是学习Java的重要参考资料。 总的来说,JAVA的学习过程需要重视基础知识的掌握,包括Java开发环境的搭建、JDK的使用等。只有掌握了这些基础知识,...
在6天的学习过程中,你将能够深入理解React Native的核心概念,掌握其工作原理,并最终有能力创建自己的跨平台应用。 React Native的基础始于React.js,这是一个用于构建用户界面的JavaScript库,以其组件化开发...
react-native-file-viewer 本机文件查看器,用于react-native。 预览移动设备支持的任何类型的文件。 iOS :它使用 Android :它使用ACTION_VIEW Intent启动与指定文件关联的默认应用。 Windows :启动与指定文件...
第九章通常会涉及一些高级主题,如反射、注解、JNI(Java Native Interface)等,这些可以帮助开发者更好地理解和利用Java的底层机制。 每一章都会包含大量的实例代码和练习,以帮助读者巩固理论知识,提高实际编程...
react-native-branch模块需要react-native >= 0.40。 yarn add react-native-branch (可选)将 branch.json 文件添加到应用项目的根目录。 看 。 react-native link react-native-branch 使用 或 安装本机 Branch ...
$ 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