"未定义参考"在AOSP中添加新模块时出错

时间:2017-04-06 09:41:31

标签: c++ compiler-errors shared-libraries android-source

我正在将MTP模块添加到Android源代码中的Recovery中。 MTP被定义为共享库(在路径框架/ av / media / mtp / Android.mk中):

 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 LOCAL_SRC_FILES:=                                  \
           MtpServer.cpp  \
           other sources files                                                 
 LOCAL_MODULE:= libmtp
 LOCAL_CFLAGS := -DMTP_DEVICE -DMTP_HOST
 LOCAL_SHARED_LIBRARIES := libutils libcutils liblog libusbhost libbinder
 include $(BUILD_SHARED_LIBRARY)

我想在Recovery中使用此模块,因此我在恢复路径中添加了一个名为minmtp的新模块。 Android.mk是:

 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 LOCAL_MODULE := libminmtp 
 LOCAL_SRC_FILES := \
    minmtp.cpp \
    MyMtpDatabase.cpp \

 LOCAL_SHARED_LIBRARIES += \
     libmtp  
 LOCAL_C_INCLUDES += \
    $(LOCAL_PATH) \
    frameworks/av/media/mtp
 LOCAL_CFLAGS += -DMTP_DEVICE -DMTP_HOST -Wall -Werror -Wno-error=deprecated-declarations 
 include $(BUILD_STATIC_LIBRARY) 

我在Android.mk中将libminmtp添加到恢复中:

 LOCAL_STATIC_LIBRARIES += libminmtp
 include $(LOCAL_PATH)/minmtp/Android.mk

编译成功。

但是当我在recovery.cpp中使用minmtp.cpp中定义的类时,由于"未定义对"的引用,编译将失败。错误。未定义的引用函数都在MtpServer.cpp和Android mtp模块的其他源文件中定义,并在minmtp.cpp中使用。

我认为这是因为链接器没有链接libmtp.so,所以我应该如何修改我的代码才能使它工作?

0 个答案:

没有答案