假设我有这段代码:
打印.cpp
int print ()
{
return 10;
}
打印.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 路径很好,但如果你发现一些奇怪的东西,请告诉我。非常感谢。