Android Studio NDK错误,虽然存在但找不到GLES3 / gl3.h

时间:2017-02-15 03:00:24

标签: opengl-es android-ndk

我正在尝试在Android Studio上制作一个使用NDK和OpenGL ES 3.0的应用程序。当我#include< GLES3 / gl3.h&gt ;, IDE在我输入时自动完成,我认为这是一个标志意味着IDE可以找到它 但是,我得到了错误:“错误:(22,10)致命错误:当我构建项目时,找不到”GLES3 / gl3.h“文件”。我检查项目结构中的NDK路径,即:

sdk\ndk-bundle\platforms\android-21\arch-arm64\usr\include\GLES3

它是正确的,GLES3 / gl3.h确实存在。

我已经用GLESv3声明了我的CMakeList:

cmake_minimum_required(VERSION 3.4.1)

# now build app's shared lib
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")

add_library(gl3jni SHARED
            gl_code.cpp
            stb_image.cpp
            )

# add lib dependencies
target_link_libraries(gl3jni
                      android
                      log 
                      EGL
                      GLESv3)

我还在Manifest.xml中声明了OpenGL ES版本:

<uses-feature android:glEsVersion="0x00030000" android:required="true"/>

我做错了什么?

2 个答案:

答案 0 :(得分:1)

Android ndk-bundle自api 18开始有openglES3,但是在arm平台上。

我的意思是,如果你要在armV8_64中编译你的项目,你必须将你的min sdk设置为21.但是如果你打算使用armeabi或armeabiV7,那么最小api将为18。

因此,请根据您在 app / build.gradle 文件中的偏好设置更改您的minSDK。

我建议您定义API 21并定义您的产品风格以支持所有体系结构,除了可以创建其他第三方库链接外,代码应该是这样的:

android.productFlavors {
        // for detailed abiFilter descriptions, refer to "Supported ABIs" @
        // https://developer.android.com/ndk/guides/abis.html#sa
        create("arm") {
            ndk.abiFilters.add("armeabi")
            ndk.ldFlags.add("-L${file(''your_libraries_path'')}".toString())
            ndk.ldLibs.addAll(["your_armeabi_library"])
        }
        create("arm7") {
            ndk.abiFilters.add("armeabi-v7a")
            ndk.ldFlags.add("-L${file('your_libraries_path')}".toString())
            ndk.ldLibs.addAll(["your_armv7_library"])
        }
        create("arm8") {
            ndk.abiFilters.add("arm64-v8a")
            ndk.ldFlags.add("-L${file(''your_libraries_path')}".toString())
            ndk.ldLibs.addAll(["your_armv8_library"])
        }
}

此gradle代码来自gradle 0.8.3实验插件,因此如果您没有此版本,则需要进行一些更改以适合您的gradle版本。

答案 1 :(得分:0)

别忘了设置

APP_PLATFORM:= android-23(或其他取决于uelordi的答案)

到application.mk