libgvr.so ссылки на лучшие практики?

Я включаю библиотеку libgvr.so в мой Android.mk, включив ее в мои LOCAL_SRC_FILES:

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-build? Я заранее прошу прощения, если это просто небольшая ошибка именования, где я пропускаю.

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 указывает на каталог, распакованный из ZIP-архива github.

Другие вопросы по тегам