环境: 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运行成功。