跳到主要内容

版本与诊断

ABI 核对、版本字符串、本机环境诊断。装包见 运行时包

功能概览

类别属性类型访问说明
版本darra_versionuint32_t查询打包版本 major*65536 + minor*256 + patch
darra_version_stringconst char*查询静态字符串,形如 1.0.0+runtime;禁止释放
诊断darra_diag_collectint32_t查询本机环境诊断 JSON;用完 darra_string_free

版本

darra_version()

uint32_t darra_version(void);

返回打包版本 major*65536 + minor*256 + patch,用 DARRA_VERSION_DECODE_MAJOR / MINOR / PATCH 宏拆。不会失败,不改错误槽。

头文件常量:DARRA_VERSION_MAJOR 1DARRA_VERSION_MINOR 0DARRA_VERSION_PATCH 0DARRA_HEADER_VERSION 为本头打包值。绑定侧核对:运行时 major 必须等于 DARRA_VERSION_MAJOR,否则 ABI 已破坏。

返回值:

  • uint32_t — 打包版本

darra_version_string()

const char* darra_version_string(void);

返回形如 "1.0.0+runtime" / "1.0.0+authoring" 的静态字符串。生命周期 = 进程,禁止释放。客户机上必须看到 +runtime。公开包是 runtime 构建,看不到加密 / 签发符号。

返回值:

  • const char* — 静态 UTF-8 字符串,禁止 darra_string_free

示例:

if (DARRA_VERSION_DECODE_MAJOR(darra_version()) != DARRA_VERSION_MAJOR) {
std::fprintf(stderr, "ABI 不匹配: 头=%d 库=%s\n",
DARRA_VERSION_MAJOR, darra_version_string());
return 1;
}

环境自检

darra_diag_collect()

int32_t darra_diag_collect(char** out_json);

采集本机环境诊断,输出统一 JSON。覆盖:os/arch、CPU、GPU 型号 + 驱动版本 + CUDA 上限、已装 Provider 及版本、授权状态(去敏:绝不含密钥 / 密码 / token / 机器指纹字节)、最近错误环形缓冲(去敏)。

尽力而为:单个字段采不到时 JSON 中该字段为 null 或缺席,整体不失败;只有彻底无法采集才返回 DARRA_INTERNAL。可能触发 WMI / NVML / sysfs 查询,耗时可到数百毫秒——禁止在 PLC 扫描周期等实时路径调用

schema 见 类型

参数:

  • out_json (char**) — SDK 分配的 UTF-8 JSON,用完 darra_string_free

返回值:

  • int32_tDARRA_OK 成功;非 0 = 错误码

示例:

char* diag = nullptr;
if (darra_diag_collect(&diag) == DARRA_OK) {
std::puts(diag);
darra_string_free(diag);
}

完整示例

#include "darra_ai.h"
#include <cstdio>

int main() {
if (DARRA_VERSION_DECODE_MAJOR(darra_version()) != DARRA_VERSION_MAJOR) {
std::fprintf(stderr, "ABI 不匹配,库版本 = %s\n", darra_version_string());
return 1;
}

char* diag = nullptr;
if (darra_diag_collect(&diag) == DARRA_OK) {
std::fprintf(stderr, "[diag] %s\n", diag);
darra_string_free(diag);
}
return 0;
}