假設您有一個first.cpp文件,並且您正確實施了Test類,那麼您有多個選項。無法看到您的Android.mk,我將通過所有選項:
將First.cpp構建爲靜態或共享庫,並將此庫添加到編譯Second.cpp的模塊中。你的Android.mk應該是這樣的:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := firstlib
LOCAL_C_INCLUDES := path/to/first.h
LOCAL_SRC_FILES := first.cpp
include $(BUILD_STATIC_LIBRARY)
如果您想首先是一個共享庫,而不是一個靜態庫,改變包括$(BUILD_STATIC_LIBRARY)線:
include $(BUILD_SHARED_LIBRARY)
現在,您的第二LIB被編譯爲如下:
include $(CLEAR_VARS)
LOCAL_MODULE := second
LOCAL_C_INCLUDES := path/to/first.h
LOCAL_C_INCLUDES += path/to/second.h
LOCAL_SRC_FILES := second.cpp
LOCAL_STATIC_LIBRARIES := firstlib
include $(BUILD_SHARED_LIBRARY)
如果firstlib被構建爲共享庫,則可以通過chaning LOCAL_STATIC_LIBRARIES + = firstlib線到下面的鏈接它:
LOCAL_SHARED_LIBRARIES += firstlib
作爲第二種解決方案,您可以將first.cpp構建爲第二個庫的一部分,這樣您就不必擔心與第一個庫鏈接。這更像是一個設計選擇,以及如何你想塑造你的庫:
include $(CLEAR_VARS
LOCAL_MODULE := libtwolib-second
include $(CLEAR_VARS)
LOCAL_MODULE := libtwolib-second
LOCAL_C_INCLUDES := path/to/first.h
LOCAL_C_INCLUDES += path/to/second.h
LOCAL_SRC_FILES := first.cpp
LOCAL_SRC_FILES += second.cpp
include $(BUILD_SHARED_LIBRARY)
最後,你可以找到你的NDK目錄中的第一種方法的樣本,樣本下/ twolibs。
你在哪裏定義'Test :: test'?你如何指定要鏈接的文件? –
檢查此鏈接:http://stackoverflow.com/questions/5292190/using-android-ndk-and-c – user1502952
我在first.h文件中定義它吧?測試應該是頭等艙的成員功能。 – lilzz