如何使用' null'来调用本机方法参数

时间:2013-02-21 17:39:30

标签: java android c++ android-ndk java-native-interface

我需要调用本机方法:

java代码:

private native Object SendFiles(String strEmail, DeviceInfo info, String [] arrFiles, int cntFiles, ID idRequest);

调用SendFiles();

SendFiles(strEmail, null, arrFiles, cntFiles, requestID);

和c ++代码:

jobject Java_com_xxxxx_xxxxx_controller_CoreController_SendFiles(JNIEnv *pEnv, jobject obj, jstring strEmail, jobject jinfo, jobjectArray jarrFiles, jint cntFiles, jobject jidRequest){
         .........

          if(jinfo == NULL)       // here crashes !!!!!!!
             doSomething();

         ............
}

Java'null'可以发送到c'NULL'吗?

我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您可以阅读多篇帖子的c ++ NULL项检查,例如Checking for a null object in C++Checking if this is nullHow do we check if a pointer is NULL pointer?

然而,这篇文章似乎给出了最直接的方法: Return a "NULL" object if search result not found

答案 1 :(得分:0)

jobject是C ++端的指针数据类型。从Java传递null对象时,C ++将其作为NULL指针接收。可以比较。

崩溃可能与其他事情有关。插入一些诊断输出并进行调试。