Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用预建库_Java_Android_C++_Android Ndk - Fatal编程技术网

Java 如何使用预建库

Java 如何使用预建库,java,android,c++,android-ndk,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 :

假设我有一段代码:

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。 我不知道如何使用这个预先构建的库,我是否必须声明#包括“print.h” 我确实把它放进去了,但它抱怨没有实现这个方法。 当我取出它时,它抱怨没有声明print()

这是一个C++问题,但希望你能有所帮助。

我相信我的Android.mk路径是好的,但是如果你发现了一些异常,请告诉我。
非常感谢。

确保在
ndk build
命令行上有
V=1
参数。这样,您将看到实际的编译命令是由ndk构建准备的。这通常会给出一条线索,说明
Android.mk
中的路径定义有什么问题

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