JNI返回Signal 7函数试图从C调用Java
发布时间:2020-12-14 19:32:37 所属栏目:Java 来源:网络整理
导读:我想打个电话从C到 Java.我尝试调用一个函数来反转一个没有参数的bool值. 这是我的C代码 /** * Check if Internet Connection is ONLINE */bool InterfaceJNI::isInternetConnected(){ JavaVM* jvm = JniHelper::getJavaVM(); int status; JNIEnv *env; jmet
我想打个电话从C到
Java.我尝试调用一个函数来反转一个没有参数的bool值.
这是我的C代码 /** * Check if Internet Connection is ONLINE */ bool InterfaceJNI::isInternetConnected() { JavaVM* jvm = JniHelper::getJavaVM(); int status; JNIEnv *env; jmethodID mid; bool isAttached = false; // jboolean o bool? bool returnValue = false; CCLog("Static isInternetConnected"); // Get Status status = jvm->GetEnv((void **) &env,JNI_VERSION_1_6); if(status < 0) { //LOGE("callback_handler: failed to get JNI environment," // "assuming native thread"); status = jvm->AttachCurrentThread(&env,NULL); CCLog("isInternetConnected Status 2: %d",status); if(status < 0) { // LOGE("callback_handler: failed to attach " // "current thread"); return false; } isAttached = true; CCLog("isInternetConnected Status isAttached: %d",isAttached); } CCLog("isInternetConnected Status: %d",status); jclass mClass = env->FindClass("org/example/SocialNetwork/InternetConnection"); // Get Static bool isInternetConnection() mid = env->GetStaticMethodID(mClass,"isInternetConnection","()Z"); if (mid == 0) { CCLog("isInternetConnected FAIL GET METHOD STATIC"); return false; } // Call Static bool isInternetConnection() returnValue = env->CallStaticBooleanMethod(mClass,mid); CCLog("isInternetConnected Done "); //----------------------------------------------------------- CCLog("Finish"); if(isAttached) jvm->DetachCurrentThread(); // Change for return value return returnValue; } 我的Java代码: public class InternetConnection { /** * Check if is working your hello world from C++ */ public static void helloWorld() { Log.v("InternetConnection","HELLO WORLD"); } /** * Check Internet Connection * @return true is Online */ public static Boolean isInternetConnection() { Log.v("InternetConnection","isInternetConnection Start"); Context ctx = CCSocialNetwork.getAppContext(); ConnectivityManager conMgr = (ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo i = conMgr.getActiveNetworkInfo(); if (i == null) { Log.v("InternetConnection","isInternetConnection NULL :S"); return false; } if (!i.isConnected()) { Log.v("InternetConnection","isInternetConnection is not connected"); return false; } if (!i.isAvailable()) { Log.v("InternetConnection","isInternetConnection is not available"); return false; } Log.v("InternetConnection","isInternetConnection DONE!"); return true; } } 但我得到: Fatal signal 7 (SIGBUS) at 0x00000000 (code=128) 我有如果我能正确获得返回值,我也无法发送参数. 解决方法
您正在返回一个实际上是对象的布尔值.尝试返回布尔基元类型.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |