我在Android上使用JNI来使用框架。要访问它的代码,我需要通过JNI访问C ++代码,但我得到了上面的例外。我理解错误和内存访问,但我不确切知道它为什么会发生。我很擅长使用这些技术,在寻找答案之后,没有人帮助过我。
我的.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)
我发现我试图在动作上做一个动作,但我正在使用的框架不允许它,这就是我得到这个例外的原因。我已经改变了我的实现,我不会再出现这个错误了。