jni 学习笔记(java调用c++)

package com.native;

public class MyNative {


public native static void set( int num );
public native static int get();

}

javac 指令

javac G:\Job\android\wrok\Native\src\com\native

javah 指令

set classpath=G:\Job\android\wrok\Native\src

javah -jni com.native.MyNative

 生成.dll文件

用vs创建一个win32 项目进入win32应用程序向导界面 点击下一步选择应用程序类型:dll 点击完成,

将生成的.h(com_native_MyNative)文件copy到创建的vs项目中,新建一个.cpp(MyNative.cpp)文件将com_native_MyNative.h中的方法实现最后编译项目生成项目.dll文件。

package com.native;

public class Main {
public static void main( String args[] ){
System.loadLibrary( "MyNative" );
com.native.MyNative a = new com.native.MyNative();
int i = 99;
a.set(i);
System.out.println( "set value: " + i );
System.out.println( "get value: " + a.get() );
}
}


com_native_MyNative.h

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


#ifndef _Included_com_native_MyNative
#define _Included_com_native_MyNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_native_MyNative
 * Method:    set
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_native_MyNative_set
  (JNIEnv *, jclass, jint);


/*
 * Class:     com_native_MyNative
 * Method:    get
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_native_MyNative_get
  (JNIEnv *, jclass);


#ifdef __cplusplus
}
#endif
#endif



MyNative.cpp

#include"com_native_MyNative.h"
int i;
JNIEXPORT void JNICALL Java_com_native_MyNative_set
  (JNIEnv *, jclass, jint j)
{
i = j;
printf("set ok!\n");
}


JNIEXPORT jint JNICALL Java_com_native_MyNative_get
  (JNIEnv *, jclass)
{
printf( "java 调用C++" );
return i;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值