Skip to Content
Plugin 開發工具鏈:llvm-mingw(主線)

工具鏈:llvm-mingw(主線)

本頁於 2026-09 以 llvm-mingw 20260616(UCRT,x86_64 版;clang 22.1.8)驗證,x86 與 x64 兩種架構都實際編譯並載入主程式確認。

沒有偏好就用這個。 主程式本身就是用它編出來的,PDK 的 build.bat 也預設走這條路 (不帶參數等於 clangmingw x64 debug)。好處:

  • 一份安裝同時能編 32 位元與 64 位元,不用裝兩套。
  • 是一個 zip,解壓就能用,不需要安裝程式、不動登錄檔。
  • 不依賴 Visual Studio。

下載與安裝

  1. 到 llvm-mingw 的 Releases 頁 , 在最新版本的 Assets 裡下載 llvm-mingw-<日期>-ucrt-x86_64.zip(撰寫本頁時最新的是 llvm-mingw-20260922-ucrt-x86_64.zip;本頁的驗證用的是 20260616 那一版)。同一頁還有 msvcrt 版與 Linux 版,不要選錯,要選 ucrt 與 x86_64:x86_64 指的是「這個編譯器本身跑在 64 位元 Windows 上」, 它同時附有編出 32 位元與 64 位元 DLL 的能力;ucrt 是它使用的 C 執行階段函式庫。

  2. 把 zip 解壓縮。解出來是一個叫 llvm-mingw-<日期>-ucrt-x86_64 的資料夾,裡面有 bin\。

  3. 把整個資料夾放到一個固定的位置。放在下面這幾個地方之一,build.bat 會自己找到, 什麼都不用設定:

    • D:\Program Files\ 或 C:\Program Files\ 底下(資料夾名字保持 llvm-mingw-... 開頭)
    • C:\llvm-mingw 或 D:\llvm-mingw(把資料夾改名成這個)

    放在別的地方也可以,看下一節。

build.bat 怎麼找到它

plugins\hello_ic\build.bat 的 clangmingw 車道依序找:

  1. 環境變數 LLVM_MINGW_DIR(安裝根目錄,也就是裡面有 bin\ 的那一層)。 有設就只信它:路徑不對會直接報錯,不會偷偷改用別的編譯器。
  2. PATH 上找得到的 x86_64-w64-mingw32-clang.exe(x86 則是 i686-w64-mingw32-clang.exe)。
  3. D:\Program Files 底下、再來是 C:\Program Files 底下的 llvm-mingw-* 資料夾(同一個目錄裡 日期最新的優先;兩個磁碟都有的話,D 槽優先)。
  4. C:\llvm-mingw、再來是 D:\llvm-mingw。

放在別的地方:在 plugins\hello_ic\ 裡把 toolchain.local.bat.sample 複製成 toolchain.local.bat,取消註解並改路徑:

set "LLVM_MINGW_DIR=C:\tools\llvm-mingw-20260616-ucrt-x86_64"

toolchain.local.bat 只是放在你電腦上的設定檔,PDK 不帶它(只有 .sample)。 你自己的專案若用 git,請自己把它加進 .gitignore,免得把你的本機路徑提交出去。先直接跑 build.bat,能編就不需要這個檔案。

建置與驗證

在 plugins\hello_ic\ 開命令提示字元(cmd):

build.bat clangmingw x64 release build.bat clangmingw x86 release

(在 PowerShell 裡要寫成 .\build.bat ...。)成功時最後一行是:

[ OK ] plugin built: plugins\hello_ic.dll (clangmingw x64 release)

產物是 plugins\hello_ic.dll——注意是 plugins\hello_ic\ 的上一層。x86 與 x64 會寫到 同一個檔名,後編的蓋掉先編的,所以一次只放一種進主程式;為什麼一定要分開編,見 架構要對:x86/x64。

編好之後怎麼載進主程式看它動,見步驟 1。

常見問題

llvm-mingw was not found:build.bat 找不到編譯器。照上面「放在別的地方」設 LLVM_MINGW_DIR,或把 bin\ 加進 PATH。

LLVM_MINGW_DIR is set to "..." but ...-clang.exe is not under its bin directory: 你設的路徑不對,少了一層或多了一層。要指到裡面有 bin\ 的那個資料夾。

你自己加的程式碼出現 -pedantic 警告或錯誤:PDK 範例以 C89 標準編譯(-std=c89 -pedantic), 所以變數宣告要放在區塊最前面、註解用 /* */。這是刻意的,這樣你的 Plugin 在最挑剔的 編譯器(例如 VC6)上也能編過。