2017-01-22 1 views
1

Android Studio의 NDK에 Matlab 코드를 포함하려는 일부 문제가 있습니다. 하지만 오류가 발생했습니다Android C++ Matlab NDK 오류 : :: rtNaN에 대한 정의되지 않은 참조

for (ii = 0; ii < i; ii++) { 
      yTemp[ii_data[ii] - 1] = rtNaN; <- error 
     } 

rtNaN의 정의가 소스 파일

I에

typedef double real_T; 
static real_T rtNaN; 

입니다 : 오류의

Error:FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':accelerometer:externalNativeBuildDebug'. 
> Build command failed. 
Error while executing 'C:\Users\Grace\AppData\Local\Android\Sdk\cmake\3.6.3155560\bin\cmake.exe' with arguments {--build C:\Users\Grace\Documents\test2\Sensorgraphchanged\accelerometer\.externalNativeBuild\cmake\debug\arm64-v8a --target accelerometergraph} 
[1/1] Linking CXX shared library C:\Users\Grace\Documents\test2\Sensorgraphchanged\accelerometer\build\intermediates\cmake\debug\obj\arm64-v8a\libaccelerometergraph.so 
FAILED: cmd.exe /C "cd . && C:\Users\Grace\AppData\Local\Android\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.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:\Users\Grace\Documents\test2\Sensorgraphchanged\accelerometer\build\intermediates\cmake\debug\obj\arm64-v8a\libaccelerometergraph.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:\Users\Grace\Documents\test2\Sensorgraphchanged\accelerometer\src\main\cpp/sensorgraph.cpp:306: undefined reference to `sensorgraph::rtNaN' 
    C:\Users\Grace\Documents\test2\Sensorgraphchanged\accelerometer\src\main\cpp/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:\Users\Grace\Documents\test2\Sensorgraphchanged\accelerometer\src\main\cpp/sensorgraph.cpp:725: undefined reference to `sensorgraph::rtNaN' 
    C:\Users\Grace\Documents\test2\Sensorgraphchanged\accelerometer\src\main\cpp/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:\Users\Grace\Documents\test2\Sensorgraphchanged\accelerometer\src\main\cpp/sensorgraph.cpp:431: undefined reference to `sensorgraph::rtNaN' 
    CMakeFiles/accelerometergraph.dir/sensorgraph.cpp.o:C:\Users\Grace\Documents\test2\Sensorgraphchanged\accelerometer\src\main\cpp/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. 

하나는이 라인에서 발생 내 build.gradle 파일에 다음을 추가했습니다. android { compileSdkVersion 23 //23.0.0 buildToolsVersion '23 .0.3 '이 오류가 발생한 이유

sourceSets.main{ 
    jni.srcDirs=[] 
    jniLibs.srcDir 'src/main/libs' 
} 

... 가}

내가 물어 봐도 내가 고칠 수있는 방법? 감사합니다

답변

0

봅니다 앱 수준의 build.gradle이를 추가 : -

android{ 
defaultConfig{ 
ndk { 
      abiFilters "armeabi", "armeabi-v7a", "x86" 
     } 
    } 
} 

하면 앱 그대에게하는 .so 파일을 찾을 수 없기 때문에이 될 수 있습니다. 이 행은 올바르게 위치를 파악하는 데 도움이됩니다.

+0

내가 이미 추가했는데 ... 작동하지 않았다 ... – Horgi

+0

여전히 동일한 오류가 표시되었거나 변경 되었습니까? –

+0

여전히 동일한 오류 ... – Horgi

0

당신은 당신의 컴파일러 빌드 경로에 sensorgraph 라이브러리에 대한 경로를 포함해야합니다 :

-L 당신이 해결되지 않은 귀하의 문제가 해결 된 것입니다 수행 한 후

"경로// 스핑크스에" .

+0

이것은 아마도 매우 어리석은 질문입니다 ...하지만 어디에서 컴파일러 빌드 경로를 찾을 수 있습니까 ?? – Horgi

관련 문제