构建与运行
SDK 包含 native/lib 和 native/bin。脚本会测试并构建 quickstart 与 canonical 示例;独立应用通过 KUI_C_SDK 或 KUI_C_LIB_DIR 定位 C ABI 依赖。Release 与 Debug 导入库目录分别核对。
pwsh -File build.ps1 -Configuration Release -Output bin
cargo run --release --example hello_world安全层与低层接口
常用 API 使用 Result 和 RAII 管理原生资源。未封装的低频 ABI 在 kui::sys 中公开,调用时遵守 unsafe、handle 所有权和 UI 线程约定。不要让 FFI 回调 panic 跨过 C 边界。
线程和扩展
Platform、Window、Document、Element 等 UI 对象不应跨线程发送。异步业务结果回到 UI 线程后更新 DOM。Full Profile 所需扩展和媒体 DLL 仍要跟应用一起部署,Rust crate 不会把这些后端重写进程序。
完整窗口入口
下面的源码直接取自 SDK hello_world 示例。保留包内模块与辅助目录,在 SDK 工程内构建;不要只复制这个文件后期待依赖自动存在。
use kui::{Platform, Window, WindowProps};
fn main() -> kui::Result<()> {
let platform = Platform::init()?;
let window = Window::new(&WindowProps {
title: "KUI Rust SDK".into(),
width: 960,
height: 640,
..WindowProps::default()
})?;
let mut document = window.document()?;
document.load_html(
r#"<main style="padding:48px;font-family:sans-serif"><h1>Rust SDK 已接入 KUI</h1><p>此程序仅通过公开 C ABI 工作。</p></main>"#,
)?;
window.show()?;
let _ = platform.run()?;
Ok(())
}
构建前检查
按现象缩小范围,再修改对应文件。
| 现象 | 检查与处理 |
|---|---|
| 找不到绑定或 native 库 | 确认从 SDK 工作区构建,路径指向该绑定附带的 native 目录。 |
| 启动报错或窗口不更新 | 核对运行库版本;让 UI 调用留在初始化线程,不阻塞事件循环。 |
| 工作线程结果无法安全更新界面 | 通过该绑定的主线程派发入口返回 UI,确认窗口仍存在。 |
文档有误或遗漏?
反馈此页问题 →