2016-08-18 91 views
0

我包括libgvr.so庫進入我的Android.mk將其包含在我的LOCAL_SRC_FILES:在一開始的路徑正確的目錄定義libgvr.so鏈接最佳實踐?

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) 
     GVR_LIB_PATH := $(GVR_DIR)/ndk-beta/lib/android_arm 
else 
     ifeq ($(TARGET_ARCH_ABI),arm64-v8a) 
       GVR_LIB_PATH := $(GVR_DIR)/ndk-beta/lib/android_arm64 
     else 
       $(error Invalid architecture!) 
     endif 
endif 
LOCAL_CPPFLAGS := -std=c++11 -Wall -Wextra 
LOCAL_SRC_FILES := \ 
    foo.cpp \ 
    bar.cpp \ 
    $(GVR_LIB_PATH)/libgvr.so 
LOCAL_C_INCLUDES := \ 
     include \ 
    generated \ 
     $(GVR_DIR)/ndk-beta/include/vr/gvr/capi/include \ 
     $(GVR_DIR)/ndk-beta/include 
LOCAL_ALLOW_UNDEFINED_SYMBOLS := false 

的$ GVR_LIB_PATH。然而,當編譯和鏈接我的代碼獲得功能無法解決的符號,我呼籲在這裏:

Error:(1155) undefined reference to 'gvr_destroy' 
Error:(1299) undefined reference to 'gvr_get_time_point_now' 
Error:(1248) undefined reference to 'gvr_get_head_pose_in_start_space' 

什麼是對libgvr.so使用NDK-建立聯繫的最佳方式?如果這只是我錯過的一個小命名錯誤,我提前道歉。

回答

1

我沒有考慮不同的架構,你正在努力嘗試,但這裏是最終爲我工作:

include $(CLEAR_VARS) 
LOCAL_MODULE := libgvr 
LOCAL_SRC_FILES := $(GVR_ANDROID_BASE)/ndk-beta/lib/android_arm/libgvr.so 
include $(PREBUILT_SHARED_LIBRARY) 
LOCAL_SHARED_LIBRARIES += libgvr 

GVR_ANDROID_BASE點從GitHub的克隆ZIP壓縮包解壓的目錄。

+0

謝謝,是$(GVR_ANDROID_BASE)是你的絕對路徑嗎?您是否遇到LOCAL_SRC_FILES中存在絕對路徑的問題? – Kadinski

+0

$(GVR_ANDROID_BASE)最終被解析爲絕對路徑 - 我有一個超級項目根用相對路徑定義,例如AbsoluteRoot = $(realpath ../../ ..),然後GVR_ANDROID_BASE最終以此爲基礎。 GVR_ANDROID_BASE:= $(AbsoluteRoot)/ external/gvr – Kaganar