Android Studio NDK 错误,无法找到 GLES3/gl3.h,尽管它存在

2023-12-05

我正在尝试在 Android Studio 上制作一个使用 NDK 和 OpenGL ES 3.0 的应用程序。当我 #include 时,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"/>

我究竟做错了什么?


Android ndk-bundle 自 api 18 起就有 openglES3,但在 arm 平台上。

我的意思是,如果您要在armV8_64中编译项目,则必须将最小sdk设置为21。但是如果您要使用armeabi或armeabiV7,则最小api将为18。

因此,根据您的喜好更改您的 minSDK应用程序/build.gradle file.

我建议您定义 API 21 并定义您的产品风格以支持所有架构,除了您可以进行其他 3rdparty 库链接之外,代码应该如下所示:

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 版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio NDK 错误,无法找到 GLES3/gl3.h,尽管它存在 的相关文章

随机推荐

  • 为什么结构体字段显示为空?

    我正在努力从以下代码中获得正确的输出 package main import encoding json fmt func main var jsonBlob3 byte name Platypus spec Monotremata id
  • android 所有动态生成按钮的点击事件

    我编写代码来生成动态按钮 但我不知道如何动态实现每个按钮的单击事件 我找到了一些答案 但无法使用我的代码 请帮助我 这是我的代码 public class dynamicbuttion extends Activity Override p
  • 如何按需挂起 Java 线程?

    我正在用java开发一个多线程游戏 我有几个工作线程从中央线程管理器获取模块 然后自行执行 现在 如果它暂时没有什么可执行的 我希望能够暂停这样的线程 我尝试从线程管理器调用 wait 方法 但这只会导致它忽略后面的 notificatio
  • 带边框和透明间隙的 CSS 三角形切口

    我需要使用 CSS 绘制以下图案作为页面各部分之间的分隔符 使用skewX 技术来自这个答案 我能够准确地模仿三角形切口 两个伪元素附加到下部部分的顶部 一个向左倾斜 一个向右倾斜 以便上部部分的背景显示出来 但我不知道如何添加边框 如第一
  • SQL 一对多

    我正在尝试为我们拥有的系统构建一个 SQL 模式channels 每个都有一个id 以及一个或多个fixtures 我很难找到实现这种一对多映射的方法 即一channel太多fixtures 我正在使用H2数据库引擎 我不能有桌子 id f
  • Excel 数据验证列表,其中排除已使用的值

    我有 A 列 其中有一些数据 B 列有一个数据验证列表下拉列表 其中包含 A 列中的值 当我从 B 列中的列表中选择值 例如 B1 A B2 B B3 C 时 我希望下拉列表排除该列中已使用的值 因此 在屏幕截图中 B4 中的下拉列表应该只
  • 为什么 iPhone 视频是颠倒的?

    我有一个使用标准相机应用程序捕获的视频文件 并使用它从我的 Iphone 5 复制btsync orig mov ISO Media Apple QuickTime movie 那个播放倒挂在 mplayer 或 vlc 中 当我使用 AW
  • 从 M 文件控制 simulink

    我正在尝试从 M 文件控制 simulink 我想要在 M 文件中做的是给 simulink 模型一些输入 运行 simulink 模型 在 0 6 秒时更改一个输入值 然后使用新输入继续运行 simulink 模型 我已经知道通过使用se
  • Xamarin 表单:如何在设备外部存储中创建文件夹和文件?

    我正在尝试在设备的外部存储上的该文件夹中创建一个文件夹和一个文本文件 与 WhatsApp 的做法相同 另外 我需要向该文件写入一些数据 是否可以以 xamarin 形式执行此操作 或者我们应该使用依赖服务吗 提前致谢 UPDATE Luc
  • 使用 HTMLAgilityPack 进行 XHTML 解析

    我在使用 HTMLAgilityPack 找到的元素内有以下元素的列表
  • 用户代理,从字符串中提取操作系统和浏览器

    我想从用户代理字符串中提取完整的操作系统名称和浏览器 我怎样才能做到这一点 我认为获取完整的操作系统名称和完整的浏览器名称很棘手 因为许多浏览器以不同的方式标识自己 您可能需要一些奇特的正则表达式 但它甚至可能无法 100 地工作 这是我用
  • FilterRegistrationBean url 模式不起作用

    我正在注册一个过滤器 如下所示用于日志输出 我想要网址模式 api Bean public CommonsRequestLoggingFilter commonsRequestLoggingFilter CommonsRequestLogg
  • HTML select - 在 HTML 中显示值属性但保留选项文本

    我有一个清单option各州在select元素
  • 获取 Blazor 组件中的当前用户

    我正在使用 Blazor 和 Windows 身份验证启动一个新站点 并且需要识别当前查看页面 组件的用户 对于 Razor 页面 可以使用以下命令访问当前用户名Context User Identity Name 但这似乎在 Blazor
  • React 类组件与功能组件[重复]

    这个问题在这里已经有答案了 Before React16 class components被使用过functional components每当需要使用时state or lifecycle methods在你的组件中 在最新版本中引入了
  • 背景图像渐变

    我有一个具有透明背景的图像 我想将其作为所有控件后面的图像覆盖在我的窗口上 我的窗口背景已经有一个渐变画笔 但通过谷歌搜索和实验我可以看出 你不能有两个背景画笔 这是不起作用的 XAML 你有什么建议 也许还有另一种设置图像的方法
  • float 对象没有属性 __getitem__

    这是我从这个函数中得到的错误 TypeError float object has no attribute getitem The self target只是一个元组并且self x and self y是整数 我不知道我做错了什么 cl
  • ' 的 ViewData 项”' aria-label='我收到错误“没有类型为 'IEnumerable' 的 ViewData 项”'> 我收到错误“没有类型为 'IEnumerable' 的 ViewData 项”

    我收到错误 不存在具有键 TIMEZONE 的 IEnumerable 类型的 ViewData 项 View 控制器 ViewData TIM
  • Word 可以直接从 Web 服务器编辑文档而不需要 Sharepoint 吗?

    我有一个看起来很简单的用例 但在谷歌搜索后我找不到解决方案 我在 FTP 服务器上有一些 Word 文档 我希望能够创建一个链接 将它们下载到 Word 中 然后允许将保存的更改发送回 FTP 服务器 问题是我只能让 Word 从 FTP
  • Android Studio NDK 错误,无法找到 GLES3/gl3.h,尽管它存在

    我正在尝试在 Android Studio 上制作一个使用 NDK 和 OpenGL ES 3 0 的应用程序 当我 include 时 IDE 在我输入时会自动完成 我认为这是一个标志 意味着 IDE可以找到它 但是 我收到错误 错误 2