无废话zig系列 创建链接动态库 静态库
两种方式:
1.创建单独的库工程项目:
mkdir libtest
cd libtest
zig init-lib
打开build.zig
//默认创建静态库
const lib = b.addStaticLibrary("libtest", "src/main.zig");
//创建动态库
const lib = b.addSharedLibrary("libtest", "src/main.zig", b.version(1,0,0));
zig build //编译生成库
- 直接在可执行项目中添加库:
mkdir test
cd test
zig init-exe
将之前创建的库代码复制过来, 结构如下:
├── build.zig
└── src
└──main.zig
└──libtest
└── main.zig
修改build.zig, 加粗部分
const lib = b.addStaticLibrary("libtest", "libtest/main.zig");
或者
const lib = b.addSharedLibrary("libtest", "libtest/main.zig", b.version(1,0,0));//注意,动态库在我的ubuntu 22.04上报错,无法链接,但在win10 freebsd上正常
lib.setBuildMode(mode);
lib.install();
const exe = b.addExecutable("test", "src/main.zig");
exe.setTarget(target);
exe.setBuildMode(mode);
exe.linkLibrary(lib); //链接创建的库libtest
exe.install();
在main.zig中main添加调用代码:
extern fn add(a: i32, b: i32) i32; //声明外部函数
pub fn main() anyerror!void {
var ret = add(2,4); //调用
.....
}

浙公网安备 33010602011771号