Android C++Matlab NDK错误:未定义对:rtNaN的引用
Android C++ Matlab NDK error: undefined reference to ::rtNaN
我在尝试将Matlab代码包含到Android Studio的NDK中时遇到了一些问题。但错误发生了:
Error:FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':accelerometer:externalNativeBuildDebug'.
> Build command failed.
Error while executing 'C:UsersGraceAppDataLocalAndroidSdkcmake3.6.3155560bincmake.exe' with arguments {--build C:UsersGraceDocumentstest2Sensorgraphchangedaccelerometer.externalNativeBuildcmakedebugarm64-v8a --target accelerometergraph}
[1/1] Linking CXX shared library C:UsersGraceDocumentstest2Sensorgraphchangedaccelerometerbuildintermediatescmakedebugobjarm64-v8alibaccelerometergraph.so
FAILED: cmd.exe /C "cd . && C:UsersGraceAppDataLocalAndroidsdkndk-bundletoolchainsllvmprebuiltwindows-x86_64binclang++.exe -target aarch64-none-linux-android -gcc-toolchain C:/Users/Grace/AppData/Local/Android/sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 --sysroot=C:/Users/Grace/AppData/Local/Android/sdk/ndk-bundle/platforms/android-21/arch-arm64 -fPIC -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -fno-exceptions -fno-rtti -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -fno-exceptions -fno-rtti -std=c++11 -Wall -O0 -fno-limit-debug-info -O0 -fno-limit-debug-info -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libaccelerometergraph.so -o C:UsersGraceDocumentstest2Sensorgraphchangedaccelerometerbuildintermediatescmakedebugobjarm64-v8alibaccelerometergraph.so CMakeFiles/accelerometergraph.dir/sensorgraph.cpp.o -landroid -lGLESv2 -llog -lm "C:/Users/Grace/AppData/Local/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/libgnustl_static.a" && cd ."
CMakeFiles/accelerometergraph.dir/sensorgraph.cpp.o: In function `sensorgraph::rt_InitInfAndNaN(unsigned long)':
C:UsersGraceDocumentstest2Sensorgraphchangedaccelerometersrcmaincpp/sensorgraph.cpp:306: undefined reference to `sensorgraph::rtNaN'
C:UsersGraceDocumentstest2Sensorgraphchangedaccelerometersrcmaincpp/sensorgraph.cpp:306: undefined reference to `sensorgraph::rtNaN'
CMakeFiles/accelerometergraph.dir/sensorgraph.cpp.o: In function `sensorgraph::b_getAllPeaks(double const*, double*, int*, double*, int*, double*, int*)':
C:UsersGraceDocumentstest2Sensorgraphchangedaccelerometersrcmaincpp/sensorgraph.cpp:725: undefined reference to `sensorgraph::rtNaN'
C:UsersGraceDocumentstest2Sensorgraphchangedaccelerometersrcmaincpp/sensorgraph.cpp:725: undefined reference to `sensorgraph::rtNaN'
CMakeFiles/accelerometergraph.dir/sensorgraph.cpp.o: In function `sensorgraph::b_findLocalMaxima(double const*, double*, int*, double*, int*)':
C:UsersGraceDocumentstest2Sensorgraphchangedaccelerometersrcmaincpp/sensorgraph.cpp:431: undefined reference to `sensorgraph::rtNaN'
CMakeFiles/accelerometergraph.dir/sensorgraph.cpp.o:C:UsersGraceDocumentstest2Sensorgraphchangedaccelerometersrcmaincpp/sensorgraph.cpp:431: more undefined references to `sensorgraph::rtNaN' follow
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
这一行出现了一个错误:
for (ii = 0; ii < i; ii++) {
yTemp[ii_data[ii] - 1] = rtNaN; <- error
}
其中rtNaN的定义是
typedef double real_T;
static real_T rtNaN;
在源文件中
我在build.gradle文件中添加了以下内容:android{compileSdk版本23//23.0.0buildTools版本"23.0.3">
sourceSets.main{
jni.srcDirs=[]
jniLibs.srcDir 'src/main/libs'
}
}
我可以问一下为什么会出现这个错误,以及如何修复它吗?感谢
尝试将其添加到应用程序级构建中。gradle:-
android{
defaultConfig{
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
}
这可能是因为你的应用程序找不到你的.so文件。这些线路将有助于正确定位。
您必须在编译器构建路径中包含传感器图库的路径:
-L"路径/至/斯芬克斯">
完成后,未解决的符号问题将得到解决。
相关文章:
- 将对象数组的引用传递给函数
- 什么时候在C++中返回常量引用是个好主意
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 何时在引用或唯一指针上使用移动语义
- 如何在c++中使用引用实现类似python的行为
- 编译C++时未定义的引用
- Ctypes wstring通过引用传递
- c++r值引用应用于函数指针
- 理解c++中的引用
- C++取消引用指针.为什么会发生变化
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 强制转换为引用类型
- 引用一个已擦除类型(void*)的指针
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 具有默认值的引用获取函数
- 如何使用基类指针引用派生类成员
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- Android C++Matlab NDK错误:未定义对:rtNaN的引用