2016-04-29 13 views
0

私は共有ライブラリlibwrapper.soを持っていますが、このライブラリはlibcore.aという別の静的ライブラリを使用しています。私は「NM -D libwrapper.so」core.cppにおけるそれらの機能のシンボルのみが見られているコマンドを使用する場合ここで、Android.mk共有ライブラリ内の静的ライブラリのAndroid NDKコールAPI

## core module 
include $(CLEAR_VARS) 
LOCAL_MODULE := core 
MY_SRC_DIR := src 
MY_SRC_FILES := core.cpp core2.cpp 
LOCAL_SRC_FILES := $(addprefix $(MY_SRC_DIR)/, $(MY_SRC_FILES)) 
include $(BUILD_STATIC_LIBRARY) 


## wrapper module 
include $(CLEAR_VARS) 
LOCAL_MODULE := wrapper 
MY_SRC_DIR := src 
MY_SRC_FILES := wrapper.cpp 
LOCAL_SRC_FILES := $(addprefix $(MY_SRC_DIR)/, $(MY_SRC_FILES)) 
LOCAL_STATIC_LIBRARIES := core 
include $(BUILD_SHARED_LIBRARY) 

奇妙なことがあります。なぜcore2.cppが関数をエクスポートしないのですか?

答えて

1

問題は落ち着きましたが、その理由はラッパーモジュールがcore2.cppではなくcore.cppのコードを呼び出すだけで、オプティマイザはデッドコードをクリーンにしていることがわかりました。この

LOCAL_WHOLE_STATIC_LIBRARIES := core 
によって

LOCAL_STATIC_LIBRARIES := core 

を置き換える代わりにLOCAL_STATIC_LIBRARIES

のLOCAL_WHOLE_STATIC_LIBRARIESを使用し、それを防ぐために、

関連する問題