讓說我有這段代碼:我怎麼使用PRE_BUILT庫
print.cpp
int print()
{
return 10;
}
print.h
#ifndef PRINT_H
#define PRINT_H
int print(); // function prototype for add.h
#endif
我編譯成庫調用libTest。 a
現在讓我說我有這個android.mk文件
include $(CLEAR_VARS)
LOCAL_MODULE := libtest
LOCAL_SRC_FILES := ../issmlib/libTest.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../include
include $(PREBUILT_STATIC_LIBRARY)
當然還有其他的東西像共享,但假設他們都工作正常! 我把libTest.a放在名爲issmlib的文件夾中,它與jni文件夾中的項目位於同一級別 然後我將print.h放入一個名爲include的文件夾中。
現在這是我的主:
#include "com_lan_factorial_FacLib.h"
#include "fac.h"
//extern long fac(long n);
JNIEXPORT jlong JNICALL Java_com_lan_factorial_FacLib_fac(JNIEnv *env, jclass clazz, jlong n)
{
fac *f = new fac();
jlong result = (jlong) (f->factorial(n));
delete(f);
return result + print();
}
所以它做什麼它計算出結果,並添加10到它。 我不知道如何使用那個預建庫,我是否需要聲明#include「print.h」 我確實把它放進去,但是它抱怨沒有實現該方法。 當我拿出來時,它抱怨沒有print()被聲明。
這是一個很大的C + +的問題,但希望你能提供幫助。
我相信我的Android.mk路徑很好,但如果你發現一些奇怪的東西,請告訴我。 非常感謝。