android - libgvr.so 链接最佳实践?

标签 android c++ android-ndk ndk-build google-vr

我通过将 libgvr.so 库包含在我的 LOCAL_SRC_FILES 中将其包含在我的 Android.mk 中:

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'

使用 ndk-build 链接 libgvr.so 的最佳方式是什么?如果这只是我遗漏的一个小命名错误,我提前道歉。

最佳答案

我没有考虑到您正在尝试的不同架构,但最终对我有用的是:

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 存档中解压的目录。

关于android - libgvr.so 链接最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39008598/

相关文章:

c++ - 我们需要序列化 ​​VAO 和 VBO

c++ - 以编程方式检查年份是否更改的最有效方法是什么

opencv - 在 cmakelists.txt android 中添加 opencv

android - android 4.0如何获取子节点的所有值?

android - 在android中添加水印图片

android - 任务 :app:signReleaseBundle'A failure executing com. android.build.gradle.internal.tasks.Workers$ActionFacade 失败,无法从存储中读取 key

java - 登录失败,您不能使用 Facebook 登录此应用

c++ - 如何在我的操作系统内核中启用 IRQ8?

android - 在 JNI Android 中调用构造函数失败

android - 升级 native 库在 Android 上不起作用