diff --git a/lib/Projectrans/Phase2Translator.py b/lib/Projectrans/Phase2Translator.py index 3f1b8fc..42322f4 100644 --- a/lib/Projectrans/Phase2Translator.py +++ b/lib/Projectrans/Phase2Translator.py @@ -2405,8 +2405,15 @@ class Phase2Translator: _combined_extern[_node.name] = _sha1_key except Exception: continue - trans.translator._export_extern_funcs.clear() - trans.translator._export_extern_funcs.update(_combined_extern) + _extern_dict = getattr(trans.translator, '_export_extern_funcs', None) + if _extern_dict is None: + _extern_dict = {} + trans.translator._export_extern_funcs = _extern_dict + _extern_dict.clear() + _extern_dict.update(_combined_extern) + _llvm_gen = getattr(trans.translator, 'LlvmGen', None) + if _llvm_gen is not None: + _llvm_gen._export_extern_funcs = _extern_dict if self._shared_generic_class_templates: if not hasattr(trans.translator.ClassHandler, '_generic_class_templates'): trans.translator.ClassHandler._generic_class_templates = {} @@ -2428,7 +2435,15 @@ class Phase2Translator: raise _vlog().warning(f"收集导出外部函数声明失败: {_e}", "Exception") if export_extern_funcs: - trans.translator._export_extern_funcs.update(export_extern_funcs) + _extern_dict2 = getattr(trans.translator, '_export_extern_funcs', None) + if _extern_dict2 is None: + trans.translator._export_extern_funcs = dict(export_extern_funcs) + _extern_dict2 = trans.translator._export_extern_funcs + else: + _extern_dict2.update(export_extern_funcs) + _llvm_gen2 = getattr(trans.translator, 'LlvmGen', None) + if _llvm_gen2 is not None: + _llvm_gen2._export_extern_funcs = _extern_dict2 for includes_dir in self.include_dirs: if os.path.isdir(includes_dir):