兩天了都在摸索NDK編程,看了一些例子,似乎沒找到一個照着嘗試就能運行的。現在把自己的操作的過程記錄下來。
1、eclipse中設置NDK
打開eclipse,在window->preferences->Android->NDK中設置NDK所在位置
2、新建andorid項目
項目右鍵->Android tools->Add Native Support
在這,把要調用的庫名字取爲:ocl,點擊finish。在項目中會多了一個jni文件夾。
在ocl.cpp中沒有什麼內容。
在項目代碼中添加如下代碼:
public class MainActivity extends ActionBarActivity {
static
{
System.loadLibrary("ocl");
}
public static native String callocl();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new AlertDialog.Builder( this ).setMessage( callocl() ).show();
}
}
調用ocl庫中的callocl()函數。
3、javah設置
點擊中三角形的符號,點擊點擊第二項External Tools Configurations,出來如下界面:
雙擊program,配置成如下:
location路徑是javah的路徑
Working Directory指向當前工程的src文件夾
Arguments參數設置如圖
點擊apply,run
4、生成頭文件
把鼠標放置到工程java代碼文件上
直接點擊綠色按鈕
此時在jni文件夾下會多出.h文件
打開ocl.cpp文件如下代碼:
#include <jni.h>
#include"com_example_ocl_MainActivity.h"
JNIEXPORT jstring JNICALL Java_com_example_ocl_MainActivity_callocl (JNIEnv *env, jclass classtest)
{
return env->NewStringUTF(" Hello JNI ");
}
執行程序看效果:、
step by step的例子。
ps:上午自己的手機插電腦上還能識別,到下午就出現這種情況了:
所以只能在虛擬機裏跑跑了。
android調用c/c++成功,下一步結合OpenCL了。