首页 > 解决方案 > 未知类型名称'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;
  };
}

标签: c++android-studioandroid-ndknative-activity

解决方案


推荐阅读