0
我正在使用JNI与Android使用框架。要访问它的代码,我需要通过JNI访问C++代码,但是我得到了上面的例外。我了解错误和内存访问,但我不清楚它为什么会发生。我很喜欢这些技术,在寻找答案之后,没有人帮助过我。尝试访问本机方法时致命信号11(SIGSEGV)在0x00000020(代码= 1)
我.h文件中:
extern "C"{
JNIEXPORT void JNICALL Java_com_eegeo_MainActivity_AddNewSphere(JNIEnv* jenv, jobject obj, jlong nativeAppWindowPtr, jdouble y);}
我.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));”它不能执行的行,给我这个例外。我不知道是因为引用还是其他的东西。
我感谢您的帮助。
我建议你打印出参考地址并将每个表达式分成一行,可能会打印每个部分的结果。这将允许您缩小问题的位置。 –
你的意思是打印我正在使用的参考文献? –
是的,作为一个数字来看看它看起来是否有效。 –