diff --git a/App/lib/core/IncludesScanner.vp b/App/lib/core/IncludesScanner.vp index d194fc6..ef4651a 100644 --- a/App/lib/core/IncludesScanner.vp +++ b/App/lib/core/IncludesScanner.vp @@ -155,7 +155,9 @@ def compute_file_sha1(pool: memhub.MemBuddy | t.CPtr, return None # 读取文件内容(stdlib.malloc 分配,避免 mbuddy 池耗尽) - BUF_SIZE: t.CSizeT = 131072 + # BUF_SIZE 与翻译侧 SRC_BUF_SIZE(1MB)一致:若截断到 128KB, + # 超过 128KB 的文件尾部内容变更不会改变 SHA1 → 增量缓存永不失效。 + BUF_SIZE: t.CSizeT = 1048576 buf: bytes = Utils.read_file_to_buf(file_path, BUF_SIZE) if buf is None: return None diff --git a/App/lib/core/Phase2.vp b/App/lib/core/Phase2.vp index 53575b8..6f7dae1 100644 --- a/App/lib/core/Phase2.vp +++ b/App/lib/core/Phase2.vp @@ -124,7 +124,11 @@ def _ScanDirForPyFiles(mb: memhub.MemBuddy | t.CPtr, if full_path is not None: sbuf: bytes = Utils.read_file_to_buf(full_path, SRC_BUF_SIZE) if sbuf is not None: - sha1_val: str = Utils.compute_sha1(mb, sbuf) + # 统一用 IncludesScanner.compute_file_sha1(CRLF→LF 归一化), + # 与 StubMerger.vp:1510 对同一批 App 源文件的口径一致; + # 此前用 Utils.compute_sha1(原始字节)会导致 stub/define + # 符号前缀不一致 → 链接报 undefined reference。 + sha1_val: str = IncludesScanner.compute_file_sha1(mb, full_path) if sha1_val is not None: ea: t.CUInt64T = t.CUInt64T(entries) + file_count * entry_size ent: SrcFileEntry | t.CPtr = (SrcFileEntry | t.CPtr)(t.CVoid(ea, t.CPtr))