AndroidStudio之NDK常見編譯錯誤
1、執行ndk-build 提示error: request for member 'FindClass' in something not a structure or union
/Users/lvxiangan/Workspace/Android_Studio/NDK/app/src/main/jni/test.c:33:30: error: member reference base type 'JNIEnv' (aka 'const struct JNINativeInterface *') is not a structure or union
jclass native_class = env->GetObjectClass(contextObject);
~~~^ ~~~~~~~~~~~~~~
/Users/lvxiangan/Workspace/Android_Studio/NDK/app/src/main/jni/test.c:34:26: error: member reference base type 'JNIEnv' (aka 'const struct JNINativeInterface *') is not a
structure or union
jmethodID pm_id = env->GetMethodID(native_class, "getPackageManager", "()Landroid/content/pm/PackageManager;");
~~~^ ~~~~~~~~~~~
/Users/lvxiangan/Workspace/Android_Studio/NDK/app/src/main/jni/test.c:35:25: error: member reference base type 'JNIEnv' (aka 'const struct JNINativeInterface *') is not a
structure or union
jobject pm_obj = env->CallObjectMethod(contextObject, pm_id);
~~~^ ~~~~~~~~~~~~~~~~
/Users/lvxiangan/Workspace/Android_Studio/NDK/app/src/main/jni/test.c:36:26: error: member reference base type 'JNIEnv' (aka 'const struct JNINativeInterface *') is not a
structure or union
錯誤原因:env變數在C和C++ 語法表達不一致引起。
C++ :env->FindClass("java/lang/String")
C語言:(*env)->FindClass(env, "java/lang/String")
2、No rule to make target needed by *.o
make: *** No rule to make target `x x x/xxxx/xxx/xx.c', needed by `x x x/xxxx/xxx/xx.c.o'. Stop.
錯誤原因:Android.mk沒有修改檔案字尾名,如原來是LOCAL_SRC_FILES := test.c,修改成
step1)LOCAL_SRC_FILES := test.cpp
step2)刪除/app/src/main/obj/local 資料夾
3、返回一個字串報錯: error: too many arguments to function call, expected single argument 'bytes', have 2 arguments
return env->NewStringUTF(env,"This is my first NDK Application");
~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/lvxiangan/ProgramFiles/AndroidStudio/Sdk/ndk-bundle/sysroot/usr/include/jni.h:840:5: note: 'NewStringUTF' declared here
jstring NewStringUTF(const char* bytes)
^
1 error generated.
相關文章
- PHP編譯安裝時常見錯誤解決辦法,php編譯常見錯誤PHP編譯
- JB7的常見編譯錯誤!!編譯
- ndk編譯錯誤:error: 'override' does not name a type編譯ErrorIDE
- Oracle之Rman常見錯誤Oracle
- PHP編譯configure時常見錯誤,和PHP7.1.4 編譯安裝PHP編譯
- 【譯】避免這些常見的JavaScript錯誤JavaScript
- django之sqlite3常見錯誤DjangoSQLite
- MySQL 常見錯誤MySql
- oracle 常見錯誤Oracle
- AndroidStudio使用NDK編譯C/C++程式碼使用原生庫Android編譯C++
- php之ZendFramewor篇(四)常見錯誤資訊PHP
- Go 常見錯誤集錦 | 字串底層原理及常見錯誤Go字串
- Go常見錯誤集錦 | 字串底層原理及常見錯誤Go字串
- 常見的web錯誤Web
- mysql replication常見錯誤MySql
- VS 編譯錯誤編譯
- 使用NDK編譯含JNI的Android專案常見問題解決方案編譯Android
- PHP中介軟體ICE,ICE的安裝配置,ICE常見編譯和執行(異常)錯誤PHP編譯
- MySQL 安裝常見錯誤MySql
- mysql8 常見錯誤MySql
- 常見的錯誤 SQL 用法SQL
- MySQL Replication常見錯誤整理MySql
- Hadoop常見錯誤2Hadoop
- ipvs編譯錯誤編譯
- php編譯小錯誤PHP編譯
- 編譯PHP的錯誤編譯PHP
- Go常見錯誤第15篇:interface使用的常見錯誤和最佳實踐Go
- 8種常見SQL錯誤用法SQL
- 搭建github部落格常見錯誤Github
- 變數命名以及常見錯誤變數
- Mysql:1236常見錯誤MySql
- Shell:常見錯誤總結(一)
- 常見的 PostgreSQL 升級錯誤SQL
- 常見 HTTP 錯誤程式碼大全HTTP
- MySql 常見錯誤程式碼大全MySql
- js作用域的常見錯誤JS
- 安裝RAC常見小錯誤
- GoldenGate 常見錯誤分析(二)Go