2012-10-20 36 views
0

讓說我有這段代碼:我怎麼使用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 + +的問題,但希望你能提供幫助。 enter image description here

我相信我的Android.mk路徑很好,但如果你發現一些奇怪的東西,請告訴我。 非常感謝。

回答

0

確保在ndk-build命令行上有參數V=1。這樣,你會看到實際的編譯命令是由ndk-build準備的。這通常會提供關於Android.mk中的路徑定義有什麼問題的線索。

如果您需要幫助解釋本日誌,在這裏發表評論和編輯的問題,包括全力打造日誌和全Android.mk,包括調用BUILD_SHARED_LIBRARY

部分