簡體   English   中英

我如何使用pre_built庫

[英]how do I use pre_built library

假設我有這段代碼:

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的方法很好,但是如果發現異常,請告訴我。 非常感謝。

確保在ndk-build命令行上有V=1參數。 這樣,您將看到由ndk-build准備的實際編譯命令。 這通常可以提供關於Android.mk的路徑定義出了什么問題的線索。

如果您需要幫助解釋此日志,請在此處留下評論,然后編輯問題以包括完整的構建日志和完整的Android.mk ,其中包括調用BUILD_SHARED_LIBRARY的部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM