快捷搜索:

ziglang 深入了解-导出函数、变量和类型供C代码使用

 

导出函数、变量和类型供C代码使用

Zig的一个主要用例是用C ABI导出一个库,供其他编程语言调用。在函数、变量和类型前面的export关键字会使它们成为库API的一部分:

mathtest.zig

export fn add(a: i32, b: i32) i32 { return a + b; }

生成静态库:

$ zig build-lib mathtest.zig

生成动态库:

$ zig build-lib mathtest.zig -dynamic

这有一个使用Zig 构建系统的例子:

test.c

#include "mathtest.h" #include <stdio.h> int main(int argc, char **argv) { int32_t result = add(42, 1337); printf("%d\n", result); return 0; }

build.zig

const Builder = @import("std").build.Builder; pub fn build(b: *Builder) void { const lib = b.addSharedLibrary("mathtest", "mathtest.zig", b.version(1, 0, 0)); const exe = b.addExecutable("test", null); exe.addCSourceFile("test.c", &[_][]const u8{"-std=c99"}); exe.linkLibrary(lib); exe.linkSystemLibrary("c"); b.default_step.dependOn(&exe.step); const run_cmd = exe.run(); const test_step = b.step("test", "Test the program"); test_step.dependOn(&run_cmd.step); }

$ zig build test 1379

[注:本文部分图片来自互联网!未经授权,不得转载!每天跟着我们读更多的书]


互推传媒文章转载自第三方或本站原创生产,如需转载,请联系版权方授权,如有内容如侵犯了你的权益,请联系我们进行删除!

如若转载,请注明出处:http://www.hfwlcm.com/info/246769.html