环境: ubuntu 22.04 zig 0.10
首先打开终端, 建立zig exe项目:
mkdir libtest zig init-exe
项目结构如下:
├── build.zig└── src ├── main.zig └── mylib └── math.zig
- 导入自定义api
打开main.zig:
删除多余的代码,保留如下:
const std = @import("std");pub fn main() !void { // Prints to stderr (it's a shortcut based on `std.io.getStdErr()`) std.debug.print("All your {s} are belong to us.\n", .{"codebase"});}
使用zig build run 编译运行
如编译无错误,则看到输出 All your codebase are belong to us.
在libtest目录下新建目录mylib, 同时添加自定义api文件math.zig内容如下:
pub fn add(a: u32, b:u32) u32 { return a + b;}
注意fn之前必须添加pub 否则该函数将无法导出被调用
在main.zig中添加调用代码如下:
const std = @import("std");const math = @import("../mylib/math.zig");pub fn main() !void { // Prints to stderr (it's a shortcut based on `std.io.getStdErr()`) std.debug.print("All your {s} are belong to us.\n", .{"codebase"}); var ret = math.add(2 ,3); std.debug.print("ret: {d}\n", .{ret});}
再次使用zig build run编译运行,出现错误
error: import of file outside package path: ‘../mylib/math.zig’
提示导入的文件超出了包的路径范围, 把mylib移动至src目录下,新的项目结构如下:
├── build.zig└── src ├── main.zig └── mylib └── math.zig
再次编译运行
All your codebase are belong to us.ret: 5
自定义api运行成功。