java 开发 jni
来源:互联网 发布:淘宝网店提升信誉 编辑:程序博客网 时间:2024/06/06 09:53
为了做好学习笔记,写下了今天学到的知识:java 开发jni ,从hellow jni开始
开发jni 一共分为6布
1编写native方法
2生成.h头文件
3在visual studio中实现头文件中的方法
4生成.dll文件,复制到java工程
5调用native方法
1编写native方法
public class test {public native static String getStringFromC();/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("14111");System.out.println(getStringFromC());}static{System.load("D:\\Android\\workspace3\\JniTest\\Project2.dll");}}
2生成.h头文件
打开命令行,在java工程src 目录下执行javah 命令
执行完命令后, 刷新自己的java项目,会看到有.h文件
3在visual studio中实现头文件中的方法
打开visual studio 创建新项目,把 jni.h jni_md.h(这两个文件在AndroidSDK中)以刚才及java工程生成的 com_ake_Test_test.h头文件一起拷贝到visual studio中
头文件右键->添加->现有项,之后如下图
修改com_ake_Test_test.h中 的#include <jni.h>改为#include "jni.h"
/* DO NOT EDIT THIS FILE - it is machine generated */#include "jni.h"/* Header for class com_ake_Test_test */#ifndef _Included_com_ake_Test_test#define _Included_com_ake_Test_test#ifdef __cplusplusextern "C" {#endif/* * Class: com_ake_Test_test * Method: getStringFromC * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_ake_Test_test_getStringFromC (JNIEnv *, jclass);#ifdef __cplusplus}#endif#endif
同样修改jni.h 中的#include <jni_md.h>为#include "jni_md.h" ,引用系统的文件用<>,引用自己的头文件要用" "
3在visual studio中实现头文件中的方法
#include "com_ake_test_Test.h"//函数实现JNIEXPORT jstring JNICALL Java_com_ake_Test_test_getStringFromC(JNIEnv * env, jclass jcls){return (*env)->NewStringUTF(env, "hellow jni!");}
4生成.dll文件,复制到java工程
选择工具栏中 debug--配置管理器--活动解决方案平台--新建--选择新平台--x64(我的电脑是64位)
配置项目生成.dll动态链接库
项目右键--常规--项目默认值--配置类型--动态库(.dll)
然后点击工具栏 生成--生成解决方案,这个时候在项目根目录就会有x64文件夹,复制其中的.dll文件到java 的根目录
c : java:
5调用native方法
public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("14111");System.out.println(getStringFromC());}System.load("D:\\Android\\workspace3\\JniTest\\Project2.dll"); 这里要写绝对路径
最后的运行效果:
最后祝大家好运!
阅读全文
0 0
- java JNI开发
- java JNI开发
- java JNI开发
- java JNI开发
- java jni 开发
- java 开发 jni
- Java JNI开发
- jni 开发 c调用java
- JAVA JNI开发应用实例
- 利用JNI实现JAVA插件开发
- JNI开发中Java与C++联调
- Java跨平台开发神器之JNI
- 安卓开发 java调用jni
- JNI开发之访问java的实例
- JNI开发
- JNI开发
- jni开发
- JNI开发
- Micro Services
- 浅谈二叉树
- AndroidStudio的翻译插件ECTranslation
- php中define和const 的区别
- display is not Valid解决办法
- java 开发 jni
- 计算机网络相关知识
- 初识BottomBar
- 关于解决cv2.findContours返回值too many values to unpack (expected 2)的问题
- JSON数据格式以及GSON的使用
- 反射
- 第3章 随机变量的数字特征
- Wolf and Rabbit
- 转发和重定向的区别