標籤:end get ++ his this 沒有 string 調用函數 準備
一、準備工作
下載NDK: http://dl.google.com/android/repository/android-ndk-r12b-windows-x86_64.zip
二、Android studio 環境配置
路徑: File->Setting->看圖,還有一個NDK要勾選上。
三、建立項目,看圖
四、配置NDK環境
上面三步,建完項目後,會給你建好了demo,demo裡有cpp,可以直接跑一邊,感受一下。然後,一臉懵逼,出錯了。。。。。。。。。。。。。。。。
看下面解決辦法
把步驟一種下載好的壓縮包解壓一下。我是放在AS目錄附近。隨便放,你能找到就好。
這就配置好環境了。
五、demo跑一跑,能行了。。。。。
總有一個不安分的心,不修改修改怎麼能行。
demo是讓返回string,我偏偏搞個返回int型,還要自己寫個函數體,跑一下。
然後,就直接在MainActivity中寫了個native方法。cpp中產生對應方法。然後,調用函數體。跑一下,立馬報錯
No implementation found for 。。。。。。。。。。。。。。。
這事什麼情況?函數體聲明過了。AS沒有報錯和警告,一運行就報錯。
然後給出正確代碼,你自己領悟:
#include <jni.h>#include <string>extern "C"{int count();JNIEXPORT jstring JNICALLJava_com_ailin_shoneworn_ndkdemo_MainActivity_stringFromJNI( JNIEnv *env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str());}int count(){ int a =1; int b=2; return a+b;}JNIEXPORT jint JNICALLJava_com_ailin_shoneworn_ndkdemo_MainActivity_intFromJni(JNIEnv *env, jobject instance, jint x, jint y) { // TODO return count();}}
總結: C++已經有太久沒用了,很多東西都遺忘了。哎!
上面,只需要在函數體外extend ”C"處加上{ },把兩個函數體都括起來就好了。
android studio 手把手叫你NDK開發環境搭建及基礎使用