我在AOSP 7.1中添加了一个模块,在这里我想使用通过cmd通过Ndk中的android-toolchain生成的预构建共享库。但是当我想使用该模块时,会得到未定义的引用。
我还尝试将lib更改为static,但仍然出现相同的错误。
这是我使用预构建的libdump_android.so
的模块include $(CLEAR_VARS)
LOCAL_MODULE := libdump_android
LOCAL_SRC_FILE := lib/../libdump_android.so
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include/../dump
include $(PREBUILT_SHARED_LIBRARY)
这是我使用的模块
LOCAL_MODULE := libdump
LOCAL_SRC_FILES := src/../dump/dump.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_SHARED_LIBRARIES := liblog libdump_android
#LOCAL_LDLIBS += -L lib/../dump_android -ldump_android
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
include $(BUILD_SHARED_LIBRARY)
这是dump_android.h
#include <iostream>
class DumpAndroid
{
public:
DumpAndroid();
~DumpAndroid() = default;
void scream(void) const;
};
这是dump_android.cpp:
#include "dump_android.h"
DumpAndroid::DumpAndroid()
{
std::cout << "DumpAndroid Constructed\n";
}
void DumpAndroid::scream(void) const
{
std::cout << "DumpAndroid SCREAM \n";
}
这是dump.h *(内部使用预构建的src文件)
#include <dump_android.h>
class Dump
{
int dump_value;
DumpAndroid dump_android_;
public:
Dump();
~Dump() = default;
void init(void);
};
这是dump.cpp
#include "dump.h"
Dump::Dump(){ }
void Dump::init(void)
{
this->dump_value = 15;
dump_android_.scream();
}
这是我用来构建的cmake命令:
cmake -DCMAKE_TOOLCHAIN_FILE=~/Android/Ndk/android-ndk-r19c/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a"
构建模块时,出现错误:
我知道我的设备肯定是arm64-v8a。