作者serflygod (serflygod)
看板AndroidDev
標題[問題] NDK的helloworld
時間Wed May 30 00:22:29 2012
各位你們好
我初次碰NDK,新手第一次當然跑helloworld
但一直碰壁無法成功
希望各位幫助一下
※有先在cygwin執行過ndk-build,生出so檔
hello-jni.h檔:
http://i.imgur.com/y9Xsb.jpg
hello-jni.c檔:
http://i.imgur.com/flVFJ.jpg
HelloJni.java檔:
http://i.imgur.com/WyMeU.jpg
檔案結構:
http://i.imgur.com/QxPyK.jpg
Android.mk檔:
http://i.imgur.com/KYOuH.jpg
出現的錯誤訊息:
http://i.imgur.com/obSSg.jpg
主要問題就是聯結不到"stringFromJNI"
但我已經用靜態的方法把它們連在一起了啊Q_Q
弄了整整兩天了
還是找不到問題所在
另外eclipse一直說我的#include <檔案.h> unresolved inclusion
header檔裡面則是
JNIEXPORT jstring JNICALL com_example_hellojni_HelloJni_stringFromJNI(JNIEnv
*, jobject);
一直出現syntax error
我查網路試了很多方法還是解決不了
像是這幾篇:
http://pyleaf.iteye.com/blog/1408043
(裡面提到的解決方法:C/C++ General -> Paths and Symbols
但我沒C/C++這選項)
http://hi.baidu.com/otss/blog/item/911cb762cb1fe6c8e6113a7a.html
(裡面提到右键你的工程-->C/C++ Build-->Discovery Options-->(找到)Discovery
profile: (选择)GCC per project scanner info profile)
但我右鍵我的project,也是沒有找到c/C++的選項...*_*
我的project右鍵會出現的選項:
http://i.imgur.com/dCv5J.jpg
在想是不是我創造project選錯選項
但我也是跟著別人的教程走的啊OTZ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.73.121
※ 編輯: serflygod 來自: 140.115.73.121 (05/30 00:23)
推 gpc:沒註冊JNI的樣子 05/30 02:11
→ layarice:loadLibrary("<MODULE>") => lib<MODULE>.so 05/30 02:20
請問要加在哪裡?
我在build project的時候
有出現libhello-jni.so => libs/armeabi/libhello-jni.so
的字樣
※ 編輯: serflygod 來自: 140.115.73.121 (05/30 02:28)
推 qrtt1:先確定你 libs 目錄下有出現,如果你是用 cmd 呼叫的情況 05/30 09:15
→ qrtt1:變動不會反應在 eclipse 內,你得 refresh folder 05/30 09:15
→ qrtt1:確定他有出現才行。 05/30 09:15
你好
我看到我的libs下面的確有libhello-jni.so的檔案
這樣算嗎?
※ 編輯: serflygod 來自: 140.115.73.121 (05/30 09:17)
推 gpc:在LIBS armeabi 裡面嗎 05/30 13:42
是的
※ 編輯: serflygod 來自: 140.115.73.121 (05/30 13:43)
→ qrtt1:你的 device 是 arm 的嗎 xd 05/30 14:53
不好意思
我不太確定你的意思
我目前是用 模擬器去跑
有另外找到教程照著它跑出來了
這一篇:
http://geek-garden.blogspot.com/2011/05/android-ndk-jni-eclipse.html
但還是不太瞭解先前的方式跑不出來OTZ
這一篇沒有用到靜態註冊或者是動態註冊
完全就是符合命名規則就好
但我看一下我原本的
看到有錯誤的有照它一樣修改一下
但還是跑不出來
※ 編輯: serflygod 來自: 140.115.73.121 (05/30 16:56)
推 henry74918:你c裡面function name少了 Java_ 開頭 05/30 17:43