Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试访问本机方法时,0x00000020(代码=1)处出现致命信号11(SIGSEGV)_Java_Android_C++_Java Native Interface - Fatal编程技术网

Java 尝试访问本机方法时,0x00000020(代码=1)处出现致命信号11(SIGSEGV)

Java 尝试访问本机方法时,0x00000020(代码=1)处出现致命信号11(SIGSEGV),java,android,c++,java-native-interface,Java,Android,C++,Java Native Interface,我使用JNI和Android来使用一个框架。为了访问它的代码,我需要通过JNI访问C++代码,但是我得到了上面的异常。我理解这个错误和内存访问,但我不知道它发生的确切原因。我是一个使用这些技术的新手,在寻找了一些答案之后,没有人能帮到我 我的.h文件: extern "C"{ JNIEXPORT void JNICALL Java_com_eegeo_MainActivity_AddNewSphere(JNIEnv* jenv, jobject obj, jlong nativeAppWindo

我使用JNI和Android来使用一个框架。为了访问它的代码,我需要通过JNI访问C++代码,但是我得到了上面的异常。我理解这个错误和内存访问,但我不知道它发生的确切原因。我是一个使用这些技术的新手,在寻找了一些答案之后,没有人能帮到我

我的.h文件:

extern "C"{
JNIEXPORT void JNICALL Java_com_eegeo_MainActivity_AddNewSphere(JNIEnv* jenv, jobject obj, jlong nativeAppWindowPtr, jdouble y);}
My.cpp文件,位于命名空间之后:

JNIEXPORT void JNICALL Java_com_eegeo_MainActivity_AddNewSphere(JNIEnv* jenv, jobject obj, jlong nativeAppWindowPtr, jdouble y){

    Examples::DrawSphereExample* example = (Examples::DrawSphereExample*)(nativeAppWindowPtr);
    Eegeo::Space::LatLongAltitude* example2 = (Eegeo::Space::LatLongAltitude*)(nativeAppWindowPtr);

    example2->SetAltitude(y);
    example->AddSphere((example->getLocation()), Eegeo::v3(1.0f, 1.0f, 0.0f));}
我的活动,它在其中调用该方法:

public static native void AddNewSphere(double Yposition);

@Override
public void onClick(View v) {
if(v.getId() == R.id.add_pin){
    AddNewSphere(id);
}
}
调试我注意到的代码是“example->AddSphere((example->getLocation()),Eegeo::v3(1.0f,1.0f,0.0f));”行,它无法执行,这给了我这个异常。我不知道是因为参考资料还是其他原因


非常感谢您的帮助。

我发现我试图以友好的方式执行操作,但我使用的框架不允许这样做,这就是我遇到此异常的原因。我已更改了实现,不再出现此错误。

我建议您打印出引用地址,并将每个表达式分成一行,可能会打印每个部分的结果。这将允许您缩小问题的范围。您的意思是打印我正在使用的引用吗?是的,作为一个数字来查看它是否有效。为什么C代码有两个参数(
jlong nativeAppWindowPtr,jdouble y
),但Java只提供第二个参数?对不起,@Alex Cohn。我明白你的意思。我把那些情人弄糊涂了。我将添加第二个。