无废话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 //编译生成库

  1. 直接在可执行项目中添加库:
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); //调用
    .....
}
posted @ 2022-11-10 15:08  bsd80  阅读(442)  评论(0)    收藏  举报