首页 > 解决方案 > Android NDK 未定义对 ASensorEventQueue_registerSensor 的引用

问题描述

我尝试通过 NDK 注册一个传感器,它一直有效,直到我尝试使用 ASensorEventQueue_registerSensor。我在下面的代码中这样做:

#include <android/sensor.h>
[...]
auto status = ASensorEventQueue_registerSensor(accelerometerEventQueue, accelerometer, SENSOR_REFRESH_PERIOD_US,SENSOR_BATCH_REPORT_TIME);
[...]

我的 CMakeLists.txt 看起来像

cmake_minimum_required(VERSION 3.4.1)

add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             src/main/cpp/native-lib.cpp )


target_link_libraries( # Specifies the target library.
                       native-lib
                       android
                       log)

我可以使用ASensorEventQueue_enableSensor或之类的功能,但由于未定义的引用错误,ASensorEventQueue_setEventRate我在使用时无法运行该应用程序。ASensorEventQueue_registerSensor

顺便说一句,我可以在包含的头文件中看到该函数,所以这应该不是问题。有谁知道如何解决这个问题?

标签: androidc++android-ndksensors

解决方案


一种可能性是您缺少一个find_libraryfor liblog 和 libandroid。在之前添加以下内容target_link_libraries

find_library(android android)
find_library(log log)

但是我不确定这是否需要。

另一种可能性是您的minSdkVersion年龄低于 26。直到 O 才添加,因此除非您的年龄至少为 26,ASensorEventQueue_registerSensor否则无法链接。minSdkVersion


推荐阅读