日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android NDK开发method GetStringUTFChars’could not be resolved

發布時間:2025/4/16 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android NDK开发method GetStringUTFChars’could not be resolved 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android NDK開發method GetStringUTFChars’could not be resolved

?

圖1

最近用到android的ndk,但在eclipse中提示method GetStringUTFChars’could not beresolved這樣的錯誤,但奇怪的是我也增加了圖1的代碼到android-ndk-r10b\samples\hello-jni\jni\hello-jni.c中卻沒有這個編譯錯誤,我分別右擊編譯出錯的AppCenter和hello-jni工程,發現AppCenter工程屬性多了C/C++ Build和C/C++ General,如下圖:


圖2

解決辦法是右鍵工程 property->C/C++ General->CodeAnalysis—>配置當前工程(或者workspace)->使 method cannot be resolved? 不選中(即此項不進行報錯 )

?

這樣就可以編譯成功了,但我在做一些測試又改回編譯OK的狀態,卻有另一個編譯錯誤:

no matchingfunction for call to '_JNIEnv::GetStringUTFChars(JNIEnv*&, _jstring*&,

?????? ?jboolean*)'

改為下面的代碼就可以了

const char*path_utf = env->GetStringUTFChars(path, &iscopy);

?

可以為什么在anroid NDK中自帶的例子沒有這個問題呢?因為Android NDK帶的jni例子都是使用C定義JNI接口,但是在項目中,因為Native代碼是用C++編寫的。

JNIEnv *env參數的使用有下面的差別:

所有JNI接口的第一個參數是JNIEnv *env, 在C中,使用方法是

(*env)->NewStringUTF(env,"Hello from JNI!");

但在C++中,其調用方法是

env->NewStringUTF("Hellofrom JNI!");

?

我們來看jni.h的相關內容:

#if defined(__cplusplus)

typedef _JNIEnvJNIEnv;

typedef _JavaVMJavaVM;

#else

typedef const struct JNINativeInterface* JNIEnv;

typedef const struct JNIInvokeInterface* JavaVM;

#endif

可以看到,對于C和C++,定義有所不同,主要原因是C不支持類,所以采用了一種變通的方法,下面給出JNIEnv分別對應C和C++的定義:

(1)??C

/* JNI spec says this returns const jbyte*, but that'sinconsistent */

const char* (*GetStringUTFChars)(JNIEnv*, jstring, jboolean*);

?

(2)??C++

struct _JNIEnv {

……….

const char*GetStringUTFChars(jstring string, jboolean* isCopy)

{returnfunctions->GetStringUTFChars(this, string, isCopy); }

………………

}

?

參考鏈接:

Eclipse Ndk開發中的Method 'NewStringUTF' could not be resolved問題

http://www.android100.org/html/201308/09/3935.html

?

jni 調用c和c++的區別.

http://blog.csdn.net/kandyer/article/details/9097203

?

總結

以上是生活随笔為你收集整理的Android NDK开发method GetStringUTFChars’could not be resolved的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。