Open Saturday-morning opened 1 year ago
不好意思,這是我的問題,由於少了一些 header file ,導致不同版本的 gcc 可能編譯不過。請在 src/pattern/gammas_dict.h
檔案中加入以下的 header file
#pragma once
#include <unordered_map>
#include <string> // 加入的 header file
#include <cstdint> // 加入的 header file
class GammasDict {
......
};
如果成功編譯或是有其它問題的話,請通知我,謝謝!
非常感谢你的答复! 现在变成了这样:
In file included from /home/suerya/工程/Sayuri/src/pattern/gammas_dict.cc:1: /home/suerya/工程/Sayuri/src/pattern/pattern.h:14:13: error: ‘uint64_t’ in namespace ‘std’ does not name a type 14 | extern std::uint64_t PatternHash[8][4][kMaxPatternArea]; | ^~~~~~~~ /home/suerya/工程/Sayuri/src/pattern/gammas_dict.cc: In member function ‘void GammasDict::Initialize(std::string)’: /home/suerya/工程/Sayuri/src/pattern/gammas_dict.cc:59:38: error: ‘PatternHash’ was not declared in this scope 59 | std::uint64_t hash = PatternHash[0][kInvalid][0]; | ^~~~~~~~~~~ make[2]: *** [CMakeFiles/Sayuri.dir/build.make:290:CMakeFiles/Sayuri.dir/src/pattern/gammas_dict.cc.o] 错误 1 make[1]: *** [CMakeFiles/Makefile2:95:CMakeFiles/Sayuri.dir/all] 错误 2 make: *** [Makefile:103:all] 错误 2
請在 src/pattern/pattern.h
檔案中加入以下的 header file
#pragma once
#include <array>
#include <cstdint> // 加入的 header file
void PatternHashAndCoordsInit();
int CharToColor(char s);
static constexpr int kMaxPatternDist = 10;
static constexpr int kMaxPatternArea = kMaxPatternDist * kMaxPatternDist;
struct PtCoord { int x, y; };
extern std::array<PtCoord, kMaxPatternArea> kPointCoords;
extern std::array<int, kMaxPatternDist + 2> kPointIndex;
extern std::uint64_t PatternHash[8][4][kMaxPatternArea];
编译成功了!!congratulation!
感謝你的幫助!晚點我會推送修正過的版本
我是Debian11,这是 执行 make 的时候的报错:
是这个系统不满足什么需求吗?debian和ubuntu之间的什么差距才会导致这个问题发生呢?