Android NDK 未定义对 ASensorEventQueue_registerSensor 的引用

标签 android c++ android-ndk sensors

我尝试通过 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_enableSensorASensorEventQueue_setEventRate 等函数,但由于 undefined reference 错误,我无法在使用 ASensorEventQueue_registerSensor 时运行应用程序。

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

最佳答案

一种可能是您缺少用于 liblog 和 libandroid 的 find_library。在 target_link_libraries 之前添加以下内容:

find_library(android android)
find_library(log log)

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

另一种可能是你的minSdkVersion低于26。ASensorEventQueue_registerSensor直到O才加入,所以无法链接,除非你的minSdkVersion 至少为 26。

关于Android NDK 未定义对 ASensorEventQueue_registerSensor 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52627303/

相关文章:

android - 连接时自动启动 MTK 设备(非三星)

c++ - 空列表中 va_arg 的返回值是多少?

android - android ndk的ndk-gdb与emacs的集成?

android - 如何将数组转换为可观察的

android - 在不访问 Activity 的情况下在 Android 的主线程上执行代码?

c++ - 在 C++ 中将指针数组作为参数传递

c++ - 具有汇编调试功能的 WriteFile 函数(同步)

android - 如何在 Android NDK 中创建新的 NativeWindow?

android - 如何将 signal() 移植到 sigaction()?

android - 取消聚焦屏幕上的所有 EditText