2014-01-07 52 views
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));”它不能执行的行,给我这个例外。我不知道是因为引用还是其他的东西。

我感谢您的帮助。

+0

我建议你打印出参考地址并将每个表达式分成一行,可能会打印每个部分的结果。这将允许您缩小问题的位置。 –

+0

你的意思是打印我正在使用的参考文献? –

+0

是的,作为一个数字来看看它看起来是否有效。 –

回答

0

我发现我试图做一个dinamically的行动,但我使用的框架不允许它,这就是为什么我得到这个异常。我改变了我的实现,我不再遇到这个错误。

相关问题