我想打个电话从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)
我有如果我能正确获得返回值,我也无法发送参数.
解决方法
您正在返回一个实际上是对象的布尔值.尝试返回布尔基元类型.