最近、ndk-buildからビルドされたスタティックライブラリをリンクすることは、アンドロイドソースツリー(mm)とは基本的に異なることがわかりました。どうしてこれなの?あらかじめビルドされたスタティックライブラリのリンクndkとAndroidのソース
// main.cpp
#include <stdio.h>
#include "doubler.hpp"
int main()
{
printf("test a static lib \n");
// library function
doubler *p = new doubler();
delete p;
return 0;
}
アンドロイドMK:
LOCAL_PATH := $(call my-dir)
###################### static lib ##################
### prebuilt lib works in NDK but not Android src
#include $(CLEAR_VARS)
#LOCAL_MODULE := doubleIt_prebuilt
#LOCAL_SRC_FILES := $(LOCAL_PATH)/libDoubler.a
#LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
##LOCAL_SRC_FILES := libDoubler.a
#include $(PREBUILT_STATIC_LIBRARY)
###################### test app ##################
include $(CLEAR_VARS)
# binary name
LOCAL_MODULE:= testApp
# c++ file extension
LOCAL_CPP_EXTENSION := .cpp
# src files
LOCAL_SRC_FILES := main.cpp
# include dir
LOCAL_C_INCLUDES := $(LOCAL_PATH)
### this works in Android src, but not in NDK
LOCAL_LDLIBS := -L$(LOCAL_PATH) -lDoubler
### prebuilt lib works in NDK but not Android src
#LOCAL_STATIC_LIBRARIES := doubleIt_prebuilt
#what to build
include $(BUILD_EXECUTABLE)
最終的には、SRCツリーに静的libがリンクする正しい方法は何ですか?
これは機能します。ありがとう! LOCAL_IS_HOST_MODULEは、ビルドシステムにこのモジュールがホスト/ツリーの一部であると一見するでしょうか?したがって、独自の静的ライブラリを提供する場合は、この行をそのままにしておきます – DMacAttack