Java JNI入门篇——C++访问并修改Java中的变量
来源:互联网 发布:mysql二级缓存 编辑:程序博客网 时间:2024/06/04 17:44
这里不在重复Java JNI 的开发过程了,不熟悉的同学请参考:Java JNI HelloWorld
直接上主要代码:
VarJNI.java
package com.example.jni;public class VarJNI { static { System.loadLibrary("varjni"); } private int number = 9; private String content = "I'm from Java!"; public native void changeValue(); public static void main(String[] args) throws Exception { VarJNI item = new VarJNI(); System.out.println("before call number: " + item.number); System.out.println("before call content: " + item.content); item.changeValue(); System.out.println("after call number: " + item.number); System.out.println("after call content: " + item.content); }}
varjni.cpp
// varjni.cpp : Defines the exported functions for the DLL application.//#include "stdafx.h"#include "com_example_jni_VarJNI.h"#include <iostream>#include <math.h>/** Class: com_example_jni_VarJNI* Method: changeValue* Signature: ()V*/JNIEXPORT void JNICALL Java_com_example_jni_VarJNI_changeValue(JNIEnv * env, jobject obj) { jclass clazz = env->GetObjectClass(obj); jfieldID int_fieldID = env->GetFieldID(clazz, "number", "I"); jint number = env->GetIntField(obj, int_fieldID); //change number value number = (int)pow(number, 2); env->SetIntField(obj, int_fieldID, number); //be careful Ljava/lang/String jfieldID string_fieldID = env->GetFieldID(clazz, "content", "Ljava/lang/String;"); jstring content = (jstring)env->GetObjectField(obj, string_fieldID); const char* cc = env->GetStringUTFChars(content, 0); env->ReleaseStringUTFChars(content, cc); char hello[] = "I'm from C++!\n"; jstring jhello = env->NewStringUTF(hello); //change content value env->SetObjectField(obj, string_fieldID, jhello); return;}
ok!
0 0
- Java JNI入门篇——C++访问并修改Java中的变量
- (JNI)C/C++ 访问 Java 实例变量和静态变量
- JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量
- JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量
- JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量
- JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量
- Android JNI入门第六篇——C调用Java
- Android JNI入门第七篇——C调用Java
- 王学岗jni——c访问java成员
- JNI-Java访问C库
- JNI获取并修改Java中类的变量和静态变量的值
- JNI中在被调用的C/C++函数中如何访问Java程序中的类,并编写应用实例
- Java JNI 入门篇——HelloWorld
- 【java&&jni】jni入门篇
- Java JNI 入门篇——传递数组与修改数组
- Android JNI入门——C调用Java
- 在java中调用c语言——JNI入门
- JNI/NDK开发指南(六)--C/C++访问Java实例变量和静态变量
- ssh积分商城开发实现通用层1.2
- 生成图形验证码
- activeMq实践,jms应用
- 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
- mysql中支持emoji表情作为where条件
- Java JNI入门篇——C++访问并修改Java中的变量
- 华信Java课第一节
- “大学教育的目的”-- 芝加哥大学Andrew Abbott教授的演讲
- 《Android5.1源码探究 —— ActivityManager(8):getLauncherLargeIconSize ()
- SpringCloud Camden.SR2中文翻译
- U-boot 的编译链接与移植
- POJ 1087 A Plug for UNIX
- 按指定行数分割文件
- GCC 内嵌汇编输出