2017-12-06 9 views
3

にネオンを有効にすることはできないと私は私のC++ライブラリをコンパイルしたときに問題を抱えて、Androidのスタジオは、コンパイルし続けることのAndroid StudioのNDKのiostreamのファイルが見つからないと、私は、NDKとCMakeのを使用して新しいですCMakeList

Error:(28, 2) error: "NEON support not enabled"

Error:error: 'neon_vector_type' attribute is not supported for this target

Error:(17, 10) fatal error: 'iostream' file not found

私は、Application.mkにAPP_STL:= stlport_staticを追加する必要があるという解決策を見てきました。

しかし、私はApplication.mkではなくCMakeListsを使用しています。

だから私はCMAKE_C_FLAGS上-DANDROID_ARM_NEON = TRUE -DAPP_STL = stlport_staticを追加しましたが、それはまだ

この私のCMakeListsは

set (pathToProject /home/user/project) 
set (pathToOpenCv /home/user/project/OpenCV330) 
FILE(GLOB_RECURSE cppfiles src/main/cpp/src/*) 

set(CMAKE_CXX_STANDARD 11) 
set(CMAKE_CXX_STANDARD_REQUIRED on) 

find_package(OpenMP) 
add_definitions(-fPIC) 
add_definitions(-fopenmp) 
add_definitions(-Ofast) 
add_definitions(-DANDROID_STL=c++_shared) 
add_definitions(-flax-vector-conversions) 
add_definitions(-fopenmp) 

cmake_minimum_required(VERSION 3.4.1) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fpermissive -DANDROID_ARM_NEON=TRUE -DAPP_STL=stlport_static") 
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") 

include_directories(${pathToProject}/app/src/main/cpp/src/include) 
include_directories(${pathToOpenCv}/sdk/native/jni/include) 

add_library(lib_opencv SHARED IMPORTED) 
add_library(native-lib SHARED src/main/cpp/native-lib.cpp) 
add_library(mylibrary SHARED ${cppfiles}) 

set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so) 

find_library(log-lib log) 

target_link_libraries(
         native-lib 
         ${log-lib} 
         lib_opencv 
         mylibrary 
         ) 

更新されているのと同じエラーを生成:

を私はまた、1を見つけましたよりコンパイルするメッセージは、-std = C++ 11のように見えますが、コンパイル時に実際には適用されません。

[10/11] Building CXX object CMakeFiles/mylibrary.dir/src/main/cpp/src/yuv420sp.cpp.o 
FAILED: /home/user/Downloads/android-ndk-r14b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=i686-none-linux-android --gcc-toolchain=/home/user/Downloads/android-ndk-r14b/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/home/user/Downloads/android-ndk-r14b/platforms/android-24/arch-x86 -Dmylibrary_EXPORTS -I../../../../src/main/cpp/include -I/home/user/git/project/OpenCV-android-sdk3.3.0/sdk/native/jni/include -I../../../../src/main/cpp/build/include -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -O0 -fno-limit-debug-info -fPIC -MD -MT CMakeFiles/mylibrary.dir/src/main/cpp/src/object_wrap.c.o -MF CMakeFiles/mylibrary.dir/src/main/cpp/src/object_wrap.c.o.d -o CMakeFiles/mylibrary.dir/src/main/cpp/object_wrap.c.o -c /home/user/git/project/app/src/main/cpp/object_wrap.c 
In file included from /home/user/git/project/app/src/main/cpp/src/object_wrap.c:209: 
/home/user/git/project/app/src/main/cpp/src/object.h:17:10: fatal error: 'iostream' file not found 
#include <iostream> 
     ^

もstlport_static、それにツールチェーンをgccのために変更した後、さらに2つのエラー

Error:(25, 10) fatal error: 'thread' file not found

Error:(424, 14) fatal error: 'array' file not found

答えて

1

を与える=私は-DANDROID_STLを設定した場合、依然として

externalNativeBuild { 
    cmake { 
    cppFlags "-std=c++11", "-Wno-error=format-security" 
    arguments "-DANDROID_STL=gnustl_static", "-DANDROID_ARM_NEON=TRUE" 
    } 
} 

を動作しない、アプリのGradleにフラグを設定しようとしましたグラール、問題解決。

arguments "-DANDROID_TOOLCHAIN=gcc","-DANDROID_ARM_NEON=TRUE" ,"-DANDROID_STL_FORCE_FEATURES=OFF" 
cppFlags "-std=gnu++11", "-Wno-error=format-security" 
関連する問題