日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Android NDK开发method GetStringUTFChars’could not be resolved

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

Android NDK開發(fā)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工程,發(fā)現(xiàn)AppCenter工程屬性多了C/C++ Build和C/C++ General,如下圖:


圖2

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

?

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

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參數(shù)的使用有下面的差別:

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

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

但在C++中,其調(diào)用方法是

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

?

我們來看jni.h的相關(guān)內(nèi)容:

#if defined(__cplusplus)

typedef _JNIEnvJNIEnv;

typedef _JavaVMJavaVM;

#else

typedef const struct JNINativeInterface* JNIEnv;

typedef const struct JNIInvokeInterface* JavaVM;

#endif

可以看到,對于C和C++,定義有所不同,主要原因是C不支持類,所以采用了一種變通的方法,下面給出JNIEnv分別對應(yīng)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開發(fā)中的Method 'NewStringUTF' could not be resolved問題

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

?

jni 調(diào)用c和c++的區(qū)別.

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

?

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。