Android Studio IDE无法找到NDK头文件

时间:2017-10-02 14:57:27

标签: android c++ android-studio cmake android-ndk

我在C ++代码中的Android应用程序中使用OpenGL ES2。 编译和执行程序按计划工作,但IDE本身无法找到NDK头文件,使我的代码文件难看:

Code file with include errors

我的cmake文件:

cmake_minimum_required(VERSION 3.4.1)
add_library(native-lib
         SHARED
         openGLRenderer.cpp
         androidInterface.cpp
            )
target_link_libraries(native-lib
                   android
                   log
                   EGL
                   GLESv2
                    )

的build.gradle:

    ...
    externalNativeBuild {
        cmake {
            cppFlags "-frtti"
            arguments '-DANDROID_PLATFORM=android-21',
                    '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
        }

...

    externalNativeBuild {
    cmake {
        path "src/main/cpp/CMakeLists.txt"
    }
}

我该怎么做才能解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:1)

我无法相信这一点。 修复是使用其他斜杠。 所以而不是:

#include <GLES2\gl2.h>

DO

#include <GLES2/gl2.h>

它仍然编译得很好,预览和编译都在我之前使用的Visual Studio中工作。

答案 1 :(得分:0)

您是否已使用“include_directories”将头文件添加到cmake文件中?

cmake_minimum_required(VERSION 3.4.1)
project(GL3Lib)
# now build app's shared lib

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wc++11-extensions -Werror -Wno-deprecated -std=c++11")

add_subdirectory(freetype)
include_directories(freetype/include)
include_directories(common)
include_directories(utils)
include_directories(rendering/text)

file(GLOB UTILS_HEADERS "utils/*.h")
file(GLOB COMMON_HEADERS "common/*.h")
file(GLOB TEXT_HEADERS "rendering/text/*.h")
file(GLOB UTILS_HEADERS "utils/*.h")

set(JNI_SRCS
    JNI_Api.cpp)
set(TEXT_SRCS
    rendering/text/Font.cpp
    )
set(UTIL_SRCS
    common/Utils.cpp
    )


add_library(gl3 SHARED
            ${JNI_SRCS}
            ${TEXT_SRCS}
            ${UTIL_SRCS}
            ${UTILS_HEADERS}
            )


# MESSAGE( STATUS "CMAKE_SOURCE_DIR:         " ${CMAKE_SOURCE_DIR} )

# add lib dependencies
target_link_libraries(gl3
                      android
                      freetype
                      log
                      EGL
                      GLESv3
                      )