FORGE KUI / docs

接入 Go SDK

Windows x64 Full Profile,使用 Go 1.22+ 和 SDK 自带构建脚本。

版本 3.61.7

先运行包内程序

解包后运行 bin 中的 hello_world,再重建 quickstart。Go SDK 使用 CGO 和 LLVM Clang,官方脚本通过 clang_go_cgo.py 适配 MSVC-target Clang 参数;不要随意混入 MinGW 运行库。

powershell
pwsh -File build.ps1 -Configuration Release -Output bin
.\bin\kui_go_hello_world.exe

初始化与资源

程序先 kui.Load(),再 kui.Init()。UI API 在初始化线程使用。Window、Document 等拥有型对象及时 Close,通常使用 defer;不要等待 Go GC 决定原生资源释放时间。后台 goroutine 的结果通过 PostTask 返回 UI 线程。

运行范围

Go 层对接核心已有的 DOM、Lua、图形、媒体和扩展能力。3D 要另外部署 kui_ext_3d.dll,媒体需要对应后端。当前 GA 范围是 Windows x64,不能推断 Linux/macOS 同版可用。

完整窗口入口

下面的源码直接取自 SDK hello_world 示例。保留包内模块与辅助目录,在 SDK 工程内构建;不要只复制这个文件后期待依赖自动存在。

go
package main

import (
	"log"

	kui "github.com/kui-engine/kui-go/v3"
	"github.com/kui-engine/kui-go/v3/examples/internal/exampleutil"
)

func main() {
	if err := kui.Load(exampleutil.RuntimePath()); err != nil {
		log.Fatal(err)
	}
	if err := kui.Init(); err != nil {
		log.Fatal(err)
	}
	defer kui.Shutdown()

	window, err := kui.NewWindow(kui.WindowProps{Title: "KUI Go SDK", Width: 960, Height: 640, Centered: true})
	if err != nil {
		log.Fatal(err)
	}
	defer window.Close()
	document, err := window.Document()
	if err != nil {
		log.Fatal(err)
	}
	defer document.Close()
	if err := document.LoadHTML(`<main style="padding:48px;font-family:sans-serif"><h1>Go SDK 已接入 KUI</h1><p>此程序仅通过公开 C ABI 工作。</p></main>`); err != nil {
		log.Fatal(err)
	}
	if err := window.Show(); err != nil {
		log.Fatal(err)
	}
	if _, err := kui.Run(); err != nil {
		log.Fatal(err)
	}
}

构建前检查

按现象缩小范围,再修改对应文件。

构建前检查
现象检查与处理
找不到绑定或 native 库确认从 SDK 工作区构建,路径指向该绑定附带的 native 目录。
启动报错或窗口不更新核对运行库版本;让 UI 调用留在初始化线程,不阻塞事件循环。
工作线程结果无法安全更新界面通过该绑定的主线程派发入口返回 UI,确认窗口仍存在。

文档有误或遗漏?

反馈此页问题 →