Android NDK:找不到数组文件

问题描述 投票:0回答:1

我正在玩 Android NDK glfw android 项目。
https://github.com/xCuri0/glfw-android-example/tree/master/app/src/main/cpp
我尝试添加:

include <array>

在 gl.c 的开头
但我得到了错误:
fatal error: 'array' file not found

我已经将以下行添加到根 CMakeLists:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-error=deprecated-declarations")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) 

构建.gradle:

        externalNativeBuild {
            cmake {
                arguments("-DANDROID_STL=c++_shared")
                cppFlags ""
            }
        }

可能是什么原因?

错误信息:

/Users/renruisi/Library/Android/sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android31 --sysroot=/Users/renruisi/Library/Android/sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -DNDK_DEBUG=1 -Dglfw_example_EXPORTS -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/thirdparty/glfw/include -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/thirdparty/glfw/deps -I/Users/renruisi/Library/Android/sdk/ndk/26.1.10909125/sources/android/native_app_glue -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/. -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Audio -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Character -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Character/Inventory -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Character/Look -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Data -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/IO -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/IO/Components -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/IO/UITypes -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/IO/UITypes/Login -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Gameplay -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Gameplay/Combat -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Gameplay/MapleMap -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Gameplay/Physics -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Graphics -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Net -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Net/Handlers -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Net/Packets -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Template -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/src/Util -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/SYSTEM -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/thirdparty -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/thirdparty/asio/asio/include -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/thirdparty/bass/c -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/thirdparty/freetype/include -I/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/thirdparty/stb -I/Users/renruisi/Downloads/glfw-android-example/app/.cxx/Debug/295s6r6h/arm64-v8a/thirdparty/freetype/include -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -fno-limit-debug-info  -fPIC -MD -MT CMakeFiles/glfw-example.dir/gl.c.o -MF CMakeFiles/glfw-example.dir/gl.c.o.d -o CMakeFiles/glfw-example.dir/gl.c.o -c /Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/gl.c

/Users/renruisi/Downloads/glfw-android-example/app/src/main/cpp/gl.c:4:10: fatal error: 'array' file not found
#include <array>
         ^~~~~~~
android c++ cmake android-ndk clang
1个回答
0
投票

您遇到的错误是因为您试图在 C 文件 (gl.c) 中包含 C++ 标头 ()。要解决此问题,可以:

  • 将文件转换为C++:将gl.c重命名为gl.cpp。这将向编译器发出信号,将其视为 C++ 源文件,从而允许使用 . 删除 C++ 内容:如果文件必须保留为 C 文件,请删除包含的内容以及任何其他特定于 C++ 的代码或库。

确保您的构建配置在这些更改后得到相应更新。

© www.soinside.com 2019 - 2024. All rights reserved.