c++ - 未知类型名称'va_list'
问题描述
使用 Android Studio 4.1 和 ndk 版本 21.3.6528147 和 c++,在构建过程中遇到以下错误:
在来自 G:/Repos/JTPieterse/jtpvk/android/jtpvkad/app/src/main/cpp/../../../../../../headers/Instance.hpp:4 的文件中: 在 G:\Android\Sdk\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\vector:273 包含的文件中: 在 G:\Android\Sdk\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\iosfwd:95 包含的文件中: 在 G:\Android\Sdk\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\wchar.h:118 包含的文件中: 在 G:\Android\Sdk\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\local\include\wchar.h:32 包含的文件中: 在 G:\Android\Sdk\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\wchar.h:33 包含的文件中: 在 G:\Android\Sdk\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\stdio.h:107 包含的文件中: G:\Android\Sdk\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\stdio.h:140:45:错误:未知类型名称'va_list';你的意思是“jtpvk::va_list”吗?
当我在编辑器中打开文件 stdio.h 并单击 va_list 上的 ctrl-b 时,它会显示定义 typedef 的文件 stdarg.h。因此编辑器似乎工作正常。此外,我的项目 jtpvk 中也没有为 va_list 定义定义,因为问题表明,例如 'jtpvk::va_list'
不知何故,我怀疑没有为编译器/链接器设置路径或环境变量。
上面的列表在每个文件构建时出现多次。一些额外的行:
G:/Android/Sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include\stdio.h:302:62:错误:未知类型名称'va_list';你的意思是“jtpvk::va_list”吗? int vsnprintf(char* __buf, size_t __size, const char* __fmt, va_list __args) __printflike(3, 0); G:\Android\Sdk\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\9.0.8\include\stdarg.h:14:27:注意:'jtpvk::va_list'声明这里 typedef __builtin_va_list va_list; G:/Android/Sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include\stdio.h:303:49:错误:未知类型名称'va_list';你的意思是“jtpvk::va_list”吗? int vsscanf(const char* __s, const char* __fmt, va_list __args) __scanflike(2, 0); ^ G:\Android\Sdk\ndk\21.3.6528147\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\9.0.8\include\stdarg.h:14:27:注意:'jtpvk::va_list'声明这里 typedef __builtin_va_list va_list; 致命错误:发出太多错误,现在停止 [-ferror-limit=] 产生 20 个错误。 忍者:构建停止:子命令失败。
实例.hpp:
#pragma once
#include <VkLib.hpp>
#include <vector>
#include "Confirm.hpp"
#include "Settings.hpp"
namespace jtpvk
{
class Instance
{
public:
auto vk_instance() -> VkInstance;
auto initialize(Settings* settings_p) -> void;
auto finalize() -> void;
auto create() -> void;
auto add_layers(std::vector<const char*> instance_layers_p)->void;
private:
Settings* settings_m = nullptr;
VkInstance vk_instance_m = nullptr;
std::vector<const char*> instance_layers_m = {};
static auto create_application_info()->VkApplicationInfo;
static auto create_info()->VkInstanceCreateInfo;
};
}
解决方案
推荐阅读
- python - R 中的 qgeom 和 Python 中的 scipy.stats.geom.ppf 有什么区别?
- solr - 如何在 SOLR 中包含 BengaliAnalyzer
- node.js - fs.readdirSync 找到 fs.statSync 无法读取的条目
- python - 在表模型中设置列标题
- c - 使用 MPI 子数组发送 3D 数组块
- python - 尝试使用代理发出请求时出现问题
- javascript - 画布垂直变换
- ruby-on-rails - 将字符串的长度与数字进行比较。Ruby on Rails 5
- haskell - Haskell 十进制转二进制
- javascript - 如何更新数据表中的数据行