尝试生成此应用程序时需要建议(遇到2个错误) 我试图在海豚模拟器中实现一个特性,在我自己学习C++代码的时候,把它变成一个非官方的构建。现在,我能够将错误数量减少到一个文件中,但这些是我得到的错误

尝试生成此应用程序时需要建议(遇到2个错误) 我试图在海豚模拟器中实现一个特性,在我自己学习C++代码的时候,把它变成一个非官方的构建。现在,我能够将错误数量减少到一个文件中,但这些是我得到的错误,c++,android-studio,android-studio-3.0,android-studio-2.3,C++,Android Studio,Android Studio 3.0,Android Studio 2.3,第一个代码错误是: const u64 bytes_per_chunk = std::min(out_data_per_chunk, VolumeWii::GROUP_DATA_SIZE); const u64 total_size = blocks_in_this_group * VolumeWii::BLOCK_DATA_SIZE; const u64 data_offset = parameters.data_offset + write_offset_of_gro

第一个代码错误是:

const u64 bytes_per_chunk = std::min(out_data_per_chunk, VolumeWii::GROUP_DATA_SIZE);
      const u64 total_size = blocks_in_this_group * VolumeWii::BLOCK_DATA_SIZE;
      const u64 data_offset = parameters.data_offset + write_offset_of_group;
我得到一个错误,上面写着C:\Users\Desktop\dolphin\Source\Core\DiscIO\WIABlob.cpp:1465:39:错误:当引用std::min时,调用“min”没有匹配的函数,它也出现在这里:

const u64 bytes_to_write = std::min(bytes_to_write_total, VolumeWii::GROUP_DATA_SIZE);
Error=C:\Users\Desktop\dolphin\Source\Core\DiscIO\WIABlob.cpp:1488:42:错误:对“min”的调用没有匹配的函数

---------------------------------------

我再次遇到的下一个错误是,所有这些都在同一个.cpp文件中,也来自同一行代码:

const u64 bytes_per_chunk = std::min(out_data_per_chunk, VolumeWii::GROUP_DATA_SIZE);
      const u64 total_size = blocks_in_this_group * VolumeWii::BLOCK_DATA_SIZE;
      const u64 data_offset = parameters.data_offset + write_offset_of_group;
这里也是:

const u64 bytes_to_write = std::min(bytes_to_write_total, VolumeWii::GROUP_DATA_SIZE);
对于后面的集合,我得到的错误是[C:\Users\Desktop\dolphin\Source\Core\DiscIO\WIABlob.cpp:1465:21:错误:常量类型为“const u64”的对象的默认初始化,也称为“const unsigned long”]->这与Android Studio中的字节写入行相关/突出显示。 也显示在较低的位置,但仍与另一个字节有关。写入行[C:\Users\Desktop\dolphin\Source\Core\DiscIO\WIABlob.cpp:1488:25:错误:常量类型为“const u64”的对象的默认初始化,也称为“const unsigned long”]

到目前为止,这是阻止我构建应用程序的两个错误

====================================================

生成错误:

In file included from ../../../../../../Core/DiscIO/WIABlob.cpp:5:
In file included from ../../../../../../Core\DiscIO/WIABlob.h:21:
In file included from ../../../../../../Core\DiscIO/WiiEncryptionCache.h:12:
../../../../../../Core\DiscIO/VolumeWii.h:91:3: warning: 'DiscIO::VolumeWii::CheckBlockIntegrity' hides overloaded virtual function [-Woverloaded-virtual]
  CheckBlockIntegrity(u64 block_index, const Partition &partition, const Partition partition1) const ;
  ^
../../../../../../Core\DiscIO/Volume.h:112:16: note: hidden overloaded virtual function 'DiscIO::Volume::CheckBlockIntegrity' declared here: different number of parameters (2 vs 3)
  virtual bool CheckBlockIntegrity(u64 block_index, const Partition& partition) const
               ^
In file included from ../../../../../../Core/DiscIO/WIABlob.cpp:5:
In file included from ../../../../../../Core\DiscIO/WIABlob.h:21:
In file included from ../../../../../../Core\DiscIO/WiiEncryptionCache.h:12:
../../../../../../Core\DiscIO/VolumeWii.h:141:10: warning: 'DiscIO::VolumeWii::CheckBlockIntegrity' hides overloaded virtual function [-Woverloaded-virtual]
    bool CheckBlockIntegrity(u64 block_index, const std::vector<u8> &encrypted_data,
         ^
../../../../../../Core\DiscIO/Volume.h:112:16: note: hidden overloaded virtual function 'DiscIO::Volume::CheckBlockIntegrity' declared here: different number of parameters (2 vs 3)
  virtual bool CheckBlockIntegrity(u64 block_index, const Partition& partition) const
               ^
../../../../../../Core/DiscIO/WIABlob.cpp:1465:39: error: no matching function for call to 'min'
          const u64 bytes_per_chunk = std::min(out_data_per_chunk, VolumeWii::GROUP_DATA_SIZE);
                                      ^~~~~~~~
C:/Android/SDK/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\algorithm:2532:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('unsigned long' vs. 'unsigned int')
min(const _Tp& __a, const _Tp& __b)
^
C:/Android/SDK/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\algorithm:2543:1: note: candidate template ignored: could not match 'initializer_list<type-parameter-0-0>' against 'unsigned long'
min(initializer_list<_Tp> __t, _Compare __comp)
^
C:/Android/SDK/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\algorithm:2523:1: note: candidate function template not viable: requires 3 arguments, but 2 were provided
min(const _Tp& __a, const _Tp& __b, _Compare __comp)
^
C:/Android/SDK/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\algorithm:2552:1: note: candidate function template not viable: requires single argument '__t', but 2 arguments were provided
min(initializer_list<_Tp> __t)
^
../../../../../../Core/DiscIO/WIABlob.cpp:1488:42: error: no matching function for call to 'min'
              const u64 bytes_to_write = std::min(bytes_to_write_total, VolumeWii::GROUP_DATA_SIZE);
                                         ^~~~~~~~
C:/Android/SDK/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\algorithm:2532:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('unsigned long' vs. 'unsigned int')
min(const _Tp& __a, const _Tp& __b)
^
C:/Android/SDK/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\algorithm:2543:1: note: candidate template ignored: could not match 'initializer_list<type-parameter-0-0>' against 'unsigned long'
min(initializer_list<_Tp> __t, _Compare __comp)
^
C:/Android/SDK/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\algorithm:2523:1: note: candidate function template not viable: requires 3 arguments, but 2 were provided
min(const _Tp& __a, const _Tp& __b, _Compare __comp)
^
C:/Android/SDK/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\algorithm:2552:1: note: candidate function template not viable: requires single argument '__t', but 2 arguments were provided
min(initializer_list<_Tp> __t)
^
如果您想在此.cpp文件中查看我正在使用的原始代码:


我希望我能得到任何好的建议来解决这个问题,并最终构建了Apk。在这个问题上,Apk被困了好几个星期了。

您的错误信息应该非常清楚。有关部分:

../../../../../../Core/DiscIO/WIABlob.cpp:1465:39: error: no matching function for call to 'min'
          const u64 bytes_per_chunk = std::min(out_data_per_chunk, VolumeWii::GROUP_DATA_SIZE);
                                      ^~~~~~~~
C:/Android/SDK/ndk/21.3.6528147/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include/c++/v1\algorithm:2532:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('unsigned long' vs. 'unsigned int')
min(const _Tp& __a, const _Tp& __b)
关键的一点是,您正在将不同的类型传递给std::min,这是不允许的,请考虑返回类型是什么。您需要将一个参数转换为另一种类型,或者可以明确说明您想要哪个版本的std::min

转换如下所示:

const u64 bytes_per_chunk = std::min(out_data_per_chunk, static_cast<unsigned long>(VolumeWii::GROUP_DATA_SIZE));
const u64 bytes_per_chunk = std::min<u64>(out_data_per_chunk, VolumeWii::GROUP_DATA_SIZE);
显式调用版本如下所示:

const u64 bytes_per_chunk = std::min(out_data_per_chunk, static_cast<unsigned long>(VolumeWii::GROUP_DATA_SIZE));
const u64 bytes_per_chunk = std::min<u64>(out_data_per_chunk, VolumeWii::GROUP_DATA_SIZE);

您的确切错误消息是什么?对于std::min类型,它可能会列出您正在传递的精确类型,我猜它们是不同的类型。请确保编辑您的问题并将错误作为文本包含在内。感谢您的建议;我已经编辑了这个问题,以包含Android studio中给我的错误行。发布你的代码,而不是图片。你是否包含了include@crowingartist-请直接在问题中输入任何构建错误,而不是作为外部链接。我们不需要完整的生成日志,只需要完整的错误消息。@0x476f72616e是的,我确实有“include”,并且我已经删除了图片。非常感谢您的建议;我能够让它构建,现在我正在对它进行测试。它可以用6个警告进行构建,但我希望事情仍然可以解决。只是提供一个更新,因为你给了我构建apk的答案。虽然它是建立的功能仍然不工作,但我会考虑尝试让它与你给我的建议工作。因此,再次感谢。