-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.zig
29 lines (22 loc) · 952 Bytes
/
main.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
const std = @import("std");
pub const SomeStruct = extern struct {
x: u8,
};
extern fn viaStructExtern(value: SomeStruct) callconv(.C) void;
extern fn viaStructPtrExtern(value: *const SomeStruct) callconv(.C) void;
extern fn viaValueExtern(value: u8) callconv(.C) void;
pub fn main() !void {
const value = SomeStruct{ .x = 11 };
std.debug.print("main {}\n", .{value});
var lib = try std.DynLib.open("./repo.dll");
defer lib.close();
const viaStructDynLib = lib.lookup(*const fn (value: SomeStruct) void, "viaStructDynLib").?;
viaStructDynLib(value);
viaStructExtern(value);
// const viaStructPtrDynLib = lib.lookup(*const fn (value: *const SomeStruct) void, "viaStructPtrDynLib").?;
// viaStructPtrDynLib(&value);
// viaStructPtrExtern(&value);
// const viaValueDynLib = lib.lookup(*const fn (value: u8) void, "viaValueDynLib").?;
// viaValueDynLib(value.x);
// viaValueExtern(value.x);
}