JNI java调用c函数 native 步骤 代码

原创 2006年06月09日 16:33:00

步骤:

1、java中声明该函数为native

public class MyNative
{
 public static native void greeting();
 static 
 {
  System.loadLibrary("MyNative");
 }
 public static void main(String[] args)
 {
  greeting();
 }
}

2、编译


E:/native>javac MyNative.java

E:/native>javah MyNative

声称.h文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class MyNative */

#ifndef _Included_MyNative
#define _Included_MyNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     MyNative
 * Method:    greeting
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_MyNative_greeting
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

3、编写调用的C函数

#include "MyNative.h"
#include <stdio.h>

JNIEXPORT void JNICALL Java_MyNative_greeting
  (JNIEnv * env, jclass cl)
{
 printf("Hello Native!/n");
 return;
}

编译出库文件

windows:

cl -ID:/jdk/jdk1.5.0_06/include -ID:/jdk/jdk1.5.0_06/include/win32 -LD
 MyNative.c -FeMyNative.dll

linux

gcc -c -fPIC -I/opt/jdk1.5.0_06/include -I/opt/jdk1.5.0_06/include/linux MyNative.c
gcc -shared -o libMyNative.so MyNative.o

 

JNI学习总结之:java调用native函数以及native函数回调java类成员方法

这几天一直在摸索java的JNI特性,现在总算是阶段性地理清了一些技术细节。 学习前请检查java环境配置,能在cmd.exe中输入java -version能显示环境信息,如: D:\works...
  • suquan629
  • suquan629
  • 2015年06月16日 13:57
  • 2552

Android JNI学习笔记(四)-数据类型映射以及native调用java

1. 前言前几篇学习了jni开发的基本流程、动态注册native函数以及相关编译文件的编写,咱们也算是知道了jni开发,但是还不够,今天咱们来学习下,java和jni的数据类型映射(说白了就是对应关系...
  • qq_21430549
  • qq_21430549
  • 2016年11月30日 00:03
  • 3212

Android Studio下JNI编程2(接上篇,详细讲解java与c层互传参数)

Android Studio下JNI环境搭建、编译、运行等可以参考: http://blog.csdn.net/huangximin1990/article/details/50441400 ...
  • huangximin1990
  • huangximin1990
  • 2016年03月09日 00:18
  • 1102

android jni的使用,java中代码在native层实现

这里主要是依据jni规范来实现java跟native的交互,在android环境下过程是类似的,只是native方法的名字要简洁很多,可以参见:http://blog.csdn.net/lin2004...
  • lin20044140410
  • lin20044140410
  • 2016年01月29日 10:37
  • 1091

Android NDK(JNI)学习总结一:Java代码中申明native函数-Java调用C函数,并在C函数中访问java类和方法、属性

本文不涉及android-ndk开发环境搭。步骤一:新建一个APP,名称为HelloJNI,然后定义一个类(将会在native代码中调用和访问该类):/* * mynative.cpp * * ...
  • daizhongyin
  • daizhongyin
  • 2015年07月14日 17:31
  • 1287

Android native调用分析(JNI)

1. 为什么需要native? 2. java层(或者说dalvik)如何识别native函数? 3. java层到native的调用是如何实现的? 4. java和native工作在同一进...
  • tww85
  • tww85
  • 2016年09月09日 11:19
  • 997

JNI native多线程调用Java静态方法

前言: 最近在做音视频实时通信,因为回声问题要解决,而播放和音视频采集是异步处理,所以需要java在中间做音频流桥接;播放端的音视频播放和拉流是在子线程处理的,因此有了这个应用场景。1.因为env不能...
  • hongdameng
  • hongdameng
  • 2016年09月13日 12:25
  • 1640

Qt安卓JNI交互之(1) C++注册函数给JAVA调用

网络上根本没人说这么个玩意,不需要对应安卓类名直接注册的机制。因为Qt中无法用JNI_OnLoad,因此我说的这个东西很重要。Qt中的新类:QtAndtoid提供了在JAVA UI线程环境中执行C++...
  • A289672082
  • A289672082
  • 2016年06月14日 23:29
  • 1522

Mac下Java的native方法以及JNI调用C语言

1.native方法最近在读JDK NIO的源代码的时候发现了很多的native方法,这些方法都只给出了native修饰的定义,并没有给出实现体,并且也没有实现体,形式上和接口很类似。但是这些其实是特...
  • u010853261
  • u010853261
  • 2016年12月05日 21:42
  • 2157

Android JNI中C和JAVA代码之间的互相调用

一、C语言代码回调Java方法 1. C代码回调Java方法的流程 (1) 找到java对应的Class 创建一个char*数组, 然后使用jni.h中提供的FindClass方法获取jclas...
  • quan648997767
  • quan648997767
  • 2017年03月23日 17:07
  • 1785
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JNI java调用c函数 native 步骤 代码
举报原因:
原因补充:

(最多只允许输入30个字)