native====java===c
来源:互联网 发布:php环境搭建 编辑:程序博客网 时间:2024/05/29 16:34
可以将native方法比作Java程序同C程序的接口,其实现步骤:
1、在Java中声明native()方法,然后编译;
2、用javah产生一个.h文件;
3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
4、将第三步的.cpp文件编译成动态链接库文件;
5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在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存放的路径]
- native====java===c
- java常识: JNI=java native interface
- react-native react-native-swiper 设置horizontal=false无效
- gcc 版本与 -mtune=native
- React Native中的=>是什么运算?
- <generator class="native"/>自动生成主键
- java + (C++) != C#
- react native开发基础=JavaScript= 学习笔记----对象
- react native 开发基础=javaScript=学习笔记----函数
- react native开发基础=JavaScript= this的用法
- <generator class="native"/>有什么作用__hnyufushan@qq.com
- hibernate generator class="native" 惹的祸。
- <generator class="native"></generator>这句话是什么意思
- Failure in loading native library db2jcct2, UnsatisfiedLinkError: ERRORCODE=-4472
- react native -FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null)
- react-native 填坑之canOverrideExistingModule=true
- Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
- INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113
- Git 工作区、暂存区和版本库
- 约束规划问题与凸二次规划
- 第十周项目三——用二叉树求解代数表达式
- ubuntu16.04 主题安装
- jsp和servlet的区别?
- native====java===c
- 6 天时间修改 1 行代码:现实中的软件开发流程
- matplotlib 设置坐标轴显示内容
- 让PIP源使用国内镜像
- C++ 二维数组详解
- 如何有效的学习一门编程语言 总结(持续不定时更新)
- 2018校招 面试总结 (一)
- 时间飞逝
- Android Framework学习记录 -- repo的强制更新