使用 char[] 参数通过 JNI 调用方法
Call method thru JNI with char[] parameter
我试图从我的本机代码调用Java方法,但它失败了。我不能用 const 字符串(即"字符串"作为参数)调用该方法,也不能通过以下方式调用该方法。如果我从方法中删除 char[] 参数并仅使用 int 参数从本机调用它,它就可以工作。所以问题是 char[] 参数。
我有Java类统计:
public class Stats {
HashMap<String, Integer> mStats;
public Stats() {
mStats = new HashMap<String, Integer>();
}
public void put(char[] key, int value) {
mStats.put(new String(key), value);
}
}
和本机函数
void Java_com_..._testObject(JNIEnv* env, jobject javaThis,
jobject jStatsObj) {
jclass jstatistics_class = env->GetObjectClass(jStatsObj);
jmethodID jput_method = env->GetMethodID(jstatistics_class, "put", "(C[I)V");
char s[]={"hello"};
env->CallIntMethod(jStatsObj, jput_method, s, 3);
}
方法签名错误。
(C[I)V
意味着void method(char, int[])
你需要([CI)V
.
来源:此页面。
相关文章:
- Java 1.8 本机 System.load 通过 JNI 调用C++产生 TLSv1.如何获取 TLSv1.2?
- 从 JNI 调用的 DLL 从哪里获取其内存以进行分配,例如 Malloc
- Android JNI:Java通过JNI调用C++类对象
- 从 JNI 调用 getWritableDatabase (SQLCipher java 方法)
- 我可以创建一个JNI调用以提升从Java的C 光纤
- 发生 JNI 调用 c++ dll "不满意链接错误: 对内存位置的无效访问"
- 我可以使用 JNI 调用 Python 库吗?
- 使用 char[] 参数通过 JNI 调用方法
- JNI调用静态方法.类对象是必需的吗
- 从 Jni 调用C++析构函数上的分段错误
- 安卓系统上的Qt蓝牙.通过抽象类上的jni调用java类
- 使用JNI调用API创建一个java7JVM
- JNI调用将jstring转换为char*
- 通过JNI调用System.loadLibrary()不会加载本机方法
- 通过JNI调用简单的java静态方法是不起作用的,尽管c++编译并运行它
- 简单的 JNI 调用不起作用
- 如何从 JNI 调用 c++ 方法
- 来自C++、FindClass 和导入的 JNI 调用
- JNI 调用等效于 MultiByteToWideChar(..)
- 通过 JNI/C++ 调用时找不到 Java 方法