From 6242f3479a32d4c323278f11a147cc894d4bb146 Mon Sep 17 00:00:00 2001 From: NathanFreeman <1056159381@qq.com> Date: Wed, 29 Jul 2026 21:33:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=B4=E6=96=87=E4=BB=B6=E5=92=8C=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E6=96=87=E4=BB=B6=E9=9C=80=E8=A6=81=E5=8E=BB=E9=87=8D?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E7=84=B6=E4=BC=9A=E5=87=BA=E7=8E=B0=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Translator.php | 10 ++++++---- src/compiler.php | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Translator.php b/src/Translator.php index 542d0278..68041590 100644 --- a/src/Translator.php +++ b/src/Translator.php @@ -1735,10 +1735,12 @@ CODE; public function genIncludeHeaderFiles(): string { - $headers = array_merge($this->globalHeaders, [ - "php_{$this->targetName}_func_decl.h", - "php_{$this->targetName}_data_decl.h", - ], $this->localHeaders); + $headers = array_unique(array_merge( + $this->globalHeaders, + ["php_{$this->targetName}_func_decl.h", "php_{$this->targetName}_data_decl.h"], + $this->localHeaders + )); + $lines = []; foreach ($headers as $header) { $lines[] = '#include <' . $header . '>'; diff --git a/src/compiler.php b/src/compiler.php index ce7977ae..5e69ea66 100644 --- a/src/compiler.php +++ b/src/compiler.php @@ -31,8 +31,8 @@ function main(int $argc, array $argv): void return; } - // 编译所有 C++ 文件 - $objectFiles = $translator->compile($sourceFiles); + // 去重和编译所有 C++ 文件 + $objectFiles = array_unique($translator->compile($sourceFiles)); // 连接所有目标文件,生成可执行文件 $binaryFile = $translator->build($objectFiles); // 如果指定了 --run / -r,编译完成后立即执行