2013-09-24 40 views
11

我正在使用jni開發Android應用程序。
我用GetStringUTFChars功能如下GetStringUTFChars函數參數

jboolean iscopy; 
const char* trainfile = (env)->GetStringUTFChars(jstr, &iscopy); 

但是我看到這樣的

const char *inCStr = (*env)->GetStringUTFChars(env, inJNIStr, NULL); 

兩個行之有效的另一個例子。但是我找不到任何關於前語法的文檔,即使它更簡潔。

我在哪裏可以找到文檔,它們之間是否有區別?

+0

您是否考慮諮詢JNI規範?它都在那裏。 – EJP

回答

12

第一個示例是C++語法,僅適用於C++程序。第二個是C程序。

兩者不同的原因是,在C++中JNIEnv是一個類,函數是env對象的成員函數,而在C中JNIEnv是一個指向結構體的指針。由於您作爲參數接收到的是指向JNIEnv的指針,因此在C中必須將其解引用才能訪問結構成員,這就是爲什麼您必須使用*env代替env

這應該包含在關於如何使用JNI的任何文本中,但您也可以通過閱讀頭文件中的代碼來找到它。

+0

感謝您的幫助和節省我的時間...... –