我试图建立开源程序,并得到这个错误:
$ make
mkdir -p ../Obj/FFS_GCC_Make_Release/ffs/src/base/
g++ -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread `pkg-config --cflags gtk+-2.0` -c base/algorithm.cpp -o ../Obj/FFS_GCC_Make_Release/ffs/src/base/algorithm.o
In file included from base/../fs/abstract.h:13:0,
from base/structures.h:14,
from base/file_hierarchy.h:20,
from base/algorithm.h:11,
from base/algorithm.cpp:7:
../../zen/serialize.h:35:45: error: ‘byte’ is not a member of ‘std’
using value_type = std::vector<std::byte>::value_type;
^~~~
compilation terminated due to -Wfatal-errors.
Makefile:108: recipe for target '../Obj/FFS_GCC_Make_Release/ffs/src/base/algorithm.o' failed
make: *** [../Obj/FFS_GCC_Make_Release/ffs/src/base/algorithm.o] Error 1
此源文件包含#include <cstdint>
下面是代码的一个问题部分:using value_type = std::vector<std::byte>::value_type;
如何重现:从官方网站下载FreeFileSync源代码,解包
cd FreeFileSync_10.4_Source\FreeFileSync\Source
make
gcc版本7.3.0(Ubuntu 7.3.0- 27 ubuntu 1 ~18.04),适用于Linux的Windows子系统
3条答案
按热度按时间pftdvrlh1#
将
#include <cstddef>
添加到serialize. h和ring_buffer. h中ycl3bljg2#
自C++17起实现std::byte。您可以检查您的编译器版本。
t30tvxxf3#
您需要在编译定义中添加_HAS_STD_BYTE=1,使用CMake来组织项目,您可以这样做:
添加编译定义(_HAS_STD_字节=1)