From f91fb7dcca7132d5323e78857cc5ca253994f1f1 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Mon, 19 Oct 2026 15:07:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(extern):=20=E5=8E=9F=E5=9C=B0=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=20export=5Fextern=5Ffuncs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit translator 与 LlvmGen 共享同一 dict 引用;替换属性导致 Gen 仍指向旧空 dict。改为 clear+update,确保跨模块 extern 裸名生效。 --- lib/Projectrans/Phase2Translator.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Projectrans/Phase2Translator.py b/lib/Projectrans/Phase2Translator.py index 24208bd..3f1b8fc 100644 --- a/lib/Projectrans/Phase2Translator.py +++ b/lib/Projectrans/Phase2Translator.py @@ -2405,7 +2405,8 @@ class Phase2Translator: _combined_extern[_node.name] = _sha1_key except Exception: continue - trans.translator._export_extern_funcs = _combined_extern + trans.translator._export_extern_funcs.clear() + trans.translator._export_extern_funcs.update(_combined_extern) if self._shared_generic_class_templates: if not hasattr(trans.translator.ClassHandler, '_generic_class_templates'): trans.translator.ClassHandler._generic_class_templates = {} @@ -2427,7 +2428,7 @@ class Phase2Translator: raise _vlog().warning(f"收集导出外部函数声明失败: {_e}", "Exception") if export_extern_funcs: - trans.translator._export_extern_funcs = export_extern_funcs + trans.translator._export_extern_funcs.update(export_extern_funcs) for includes_dir in self.include_dirs: if os.path.isdir(includes_dir):