1 个不稳定版本
0.2.0 | 2023年10月13日 |
---|
#6 in #blade
110KB
214 代码行
blade-ink-ffi
一个包装库,提供对Blade Ink的C FFI支持。现在您可以从C调用Blade Ink Rust库了!
以下是从测试代码中提取的使用示例,该测试代码可以在tests/binc_test.c
中找到
int main(void) {
uint32_t ret = BINK_OK;
BINK_Story *story = NULL;
BINK_Choices *choices = NULL;
char *err_msg = NULL;
char *line = NULL;
char *json_string = read_json_file("./inkfiles/TheIntercept.ink.json");
if(json_string == NULL)
exit(EXIT_FAILURE);
ret = bink_story_new(&story, json_string, &err_msg);
check_ret(ret, story, err_msg);
free(json_string);
bool end = false;
while(!end) {
bool can_continue;
ret = bink_story_can_continue(story, &can_continue);
check_ret(ret, story, err_msg);
while (can_continue) {
ret = bink_story_cont(story, &line, &err_msg);
check_ret(ret, story, err_msg);
puts(line);
bink_cstring_free(line);
ret = bink_story_can_continue(story, &can_continue);
check_ret(ret, story, err_msg);
}
// Obtain and print choices
size_t len = 0;
ret = bink_story_get_current_choices(story, &choices, &len);
check_ret(ret, story, NULL);
//printf("Num. choices: %lu\n", len);
if (len !=0) {
print_choices(choices, len);
printf("\n");
bink_choices_free(choices);
// Always choose the first option
ret = bink_story_choose_choice_index(story, 0);
check_ret(ret, story, NULL);
} else {
end = true;
}
}
printf("Story ended ok.\n");
finish(EXIT_SUCCESS, story, err_msg);
}
更多示例,请查看此仓库中的tests
文件夹。
更多详情,请查看Blade Ink库源代码。
下载
包含库的静态和动态链接库的编译包,可以从中发布部分下载。
如果您需要平台的库版本没有编译,您可以自己编译
$ rustup target add <your_platform_name>
$ cargo build --target <your_platform_name>
执行测试
我们可以使用tests
文件夹中的tests/Makefile
文件来执行C测试。从项目根目录执行
$ make -f tests/Makefile test
目前,测试只能在Linux或Macos上执行,您需要安装C工具链。
依赖项
~1.4–2.4MB
~49K SLoC