我尝试通过 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
等函数,但由于 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/