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