- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试调用自定义Java类型的方法,但收到SIGSEGV信号。
这是Java代码
package com.example.JniApi;
public class JniApi {
public void test()
{
MyType obj = new MyType();
nativePrintMyTypeMsg(obj);
}
public static native void nativePrintMyTypeMsg(MyType obj);
}
public class MyType {
public void printMsg()
{
android.util.Log.d("TestJni", "From Java");
}
}
这是 native 代码
JNIEXPORT void JNICALL Java_com_example_JniApi_JniApi_nativePrintMyTypeMsg
(JNIEnv *env , jclass, jobject myObj)
{
jclass myTypeClass = env->GetObjectClass(myObj);
jmethodID printMsgMethodId = env->GetMethodID(myTypeClass,"printMsg", "()V");
for(size_t i = 0; i < 1000; ++i){
env->CallObjectMethod(myObj, printMsgMethodId);
}
return;
}
最佳答案
仅凭内存并查看您的代码 fragment ,我想指出两件事:
(JNIEnv *env , jclass, jobject myObj)
这个签名看起来有点奇怪,第二个参数缺少参数对象。为了理智起见,请将其更改为
(JNIEnv *env , jclass jclazz, jobject myObj)
接下来可能更重要的是,MyType
类中的 printMsg()
方法实际上返回 void
。要通过 JNI 调用 void 方法,您需要通过 CallVoidMethod 来调用它。更多信息请查看JNI Documentation
关于java - Android JNI : SIGSEGV on CallObjectMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23976044/
我的目标是创建一个 Java 的实例在 C++ 中上课, 然后调用 Java 中定义的方法类。 这是我的 Java 的摘要类: EXICodec.java public class EXICodec
我有 C++ 代码调用返回对象的 Java 方法: virtual bool OnGetData(sf::SoundStream::Chunk& data) { jobject jchunk
我正在尝试调用自定义Java类型的方法,但收到SIGSEGV信号。 这是Java代码 package com.example.JniApi; public class JniApi { p
在 CallObjectMethod 之后,我应该有一个实际类型为 jchar 的对象,以及如何在 C++ 中将此对象更改为 unsigned short。 现在我尝试将对象转换为 jchar,然后将
我正在尝试使用 Node.js 和 socket.io 为 Android 应用程序和桌面浏览器创建一个社交应用程序。 在浏览器客户端上,一切正常,问题是 android 客户端。实际上我使用了 so
我注意到 Qt 文档提供了两种调用 android native 方法的方法,但我不知道何时使用 QAndroidJniObject::callMethod 以及何时使用 QAndroidJniObj
这是我提出的另一个问题的后续:Android -- get MEID from JNI 我正在尝试获取 Android 手机的 ID。我有一些 JNI 代码和一个简单的测试应用程序来调用 JNI 代码
我有一个 C 例程,它通过 JNI 调用接口(interface)调用 Java 模块。我一直遇到一个问题,即在使用 C 模块和 JNI 时调用 Java 方法一直返回 NULL 字符串,但是当我在命
在 Android 应用程序中,我有一些调用 java 静态方法的 JNI 代码。 jbyteArray response = (jbyteArray)pEnv->CallObjectMethod(h
我正在尝试使用 JNI 将三个字符串传递给 java 静态方法,但我找不到该怎么做。我可以将单个字符串作为输入传递,但不清楚如何传递多个参数。你能帮忙吗? int _tmain(int argc, _
我对 Java 和 JNI 比较陌生。我有一个 Java 实例方法void setState(Boolean done) 我正尝试使用 JNI 从 C++ 调用它 tbuff = env->GetOb
几天来,我一直在尝试解决使用 JNI 从 C++ 调用 Java 的问题。 这是我的 C++ 代码。我调用了一个调用 C++ 的 Java 函数,在该 C++ 函数中,我试图使用收到的 JNIEnv
我是一名优秀的程序员,十分优秀!