aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/add.rs7
-rw-r--r--examples/add.ts12
-rw-r--r--examples/add.zig6
3 files changed, 25 insertions, 0 deletions
diff --git a/examples/add.rs b/examples/add.rs
new file mode 100644
index 000000000..8ff8676cc
--- /dev/null
+++ b/examples/add.rs
@@ -0,0 +1,7 @@
+#[no_mangle]
+pub extern "C" fn add(a: isize, b: isize) -> isize {
+ a + b
+}
+
+// to compile:
+// rustc --crate-type cdylib add.rs
diff --git a/examples/add.ts b/examples/add.ts
new file mode 100644
index 000000000..e975b122e
--- /dev/null
+++ b/examples/add.ts
@@ -0,0 +1,12 @@
+import { dlopen, suffix } from "bun:ffi";
+
+const {
+ symbols: { add },
+} = dlopen(`./libadd.${suffix}`, {
+ add: {
+ args: ["i32", "i32"],
+ returns: "i32",
+ },
+});
+
+console.log(add(1, 2));
diff --git a/examples/add.zig b/examples/add.zig
new file mode 100644
index 000000000..24b78bec7
--- /dev/null
+++ b/examples/add.zig
@@ -0,0 +1,6 @@
+pub export fn add(a: i32, b: i32) i32 {
+ return a + b;
+}
+
+// to compile:
+// zig build-lib -OReleaseFast ./add.zig -dynamic --name add