链接AOSP 7.1中的预建共享库时未定义参考

时间:2019-07-19 10:30:02

标签: android shared-libraries linker-errors android-source android.mk

我在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"

构建模块时,出现错误:

“错误:对“ DumpAndroid :: DumpAndroid()”的未定义引用”

“错误:对“ DumpAndroid :: screa()const”的未定义引用””

我知道我的设备肯定是arm64-v8a。

0 个答案:

没有答案