我如何使用pre_built库

时间:2012-10-20 01:50:29

标签: java android c++ android-ndk

让我说我有这段代码:

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路径很好,但是如果你发现了一些奇怪的东西,请告诉我。 非常感谢。

1 个答案:

答案 0 :(得分:0)

确保V=1命令行上有ndk-build参数。这样,您将看到由ndk-build准备的实际编译命令。这通常会为Android.mk中的路径定义出现问题提供线索。

如果您需要帮助来解释此日志,请在此处留下评论并编辑问题以包含完整的构建日志和完整的Android.mk,包括调用 BUILD_SHARED_LIBRARY

相关问题