Java调用Native方法

本文详细介绍了如何在Java中调用Native方法,包括新建Java类声明native方法、使用javah生成头文件、创建C++工程实现方法、处理字符串转换以及异常处理。遵循Java_com_test_Test_hello的命名规则,确保DLL与指定名字一致,并了解如何设置库路径。
一、如何使用
1. 新建Java类
package com.test;

public class Test {
	public static native String hello(String str);
	
	static {
		System.loadLibrary("Test");
	}
}

2. 编译Java程序,生成.class文件
javac Test.java

3. 生成.h文件,运行目录要在com的上一级
javah com.test.Test

4. 创建C++工程,引用生成的.h文件,实现hello函数
JNIEXPORT jstring JNICALL Java_com_oblicore_jni_TestJni_hello(JNIEnv * env, jobject obj, jstring str)
函数的命名规则为Java_<class fully qualifiedname>_<methodname>
前两个参数是必须的

5. 生成的DLL必须和第一步中指定的名字一样,即Test.dll

6. DLL可以放在Java程序同目录下,也可通过java.library.path参数传入,或者放在path环境变量包含的目录中

二、如何转换字符串
1. jstring to std string
	const jchar* raw = env->GetStringChars(str, NULL);
	if (raw != NULL) {
		jsize len = env->GetStringLength(str);
		stdString.assign((wchar_t*)raw, len);
		env->ReleaseStringChars(str, raw);
	}

2. std string to jstring
jstring str = env->NewString((const jchar*)stdString.c_str(), (jsize)stdString.length());

三、如何处理异常
jclass Exception = env->FindClass("java/lang/Exception");
env->ThrowNew(Exception, "Error occurred");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值