gpt4 book ai didi

c - 如何在另一个 C 任务中调用 JNI 的 C 方法?

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:21 25 4
gpt4 key购买 nike

我实现了一个 JNI 方法来处理一个对象并返回一个值。

这个方法有点复杂,有很多JNI分配。

我想使用 GDB 调试我的 JNI 方法并使用 Valgrind 检查它的内存,但是使用 javam 这个任务听起来很复杂。

所以我的问题是,是否可以创建一个调用 JNI 函数的 C 函数,其调用方式与 java 的调用方式接近?

像这个例子:

JNIEXPORT jint JNICALL Java_test_Test_func (JNIEnv *env, jobject obj, jstring jstr){
const char *p_str;
p_str = (*env)->GetStringUTFChars(env, jstr, 0);
return char[2];
}

int main(int argc, char **argv){
JNIEnv env;
jstring test = env->NewStringUTF(env, "vals");
printf("%d\n", Java_test_Test_func(&env, NULL, test));
//Expects: 108
return 0;
}

最佳答案

您需要首先实际创建 VM,请参阅 Chapter 5 of the JNI documentation .这将为您提供一个 jvm,您可以从中获取一个 JNIEnv *env 并调用您的函数。

也就是说,您也可以正常启动您的 Java 进程,将调试器附加到它并在您的函数上放置一个断点,就像您对任何其他 native 程序所做的那样。

关于c - 如何在另一个 C 任务中调用 JNI 的 C 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53642134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com