🙄

【Deno】FFI を利用して C 言語の printf を呼び出す

2024/05/23に公開

Deno.dlopen を使う。スクリプト実行の際に --allow-ffi --unstable-ffi オプションを指定する

deno run --allow-ffi --unstable-ffi test.ts
test.ts
const libName = Deno.build.os === "linux" ?
  "libc.so.6" : "libSystem.B.dylib";

// https://docs.deno.com/runtime/manual/runtime/ffi_api#supported-types
const dylib = Deno.dlopen(
  libName,
  {
    "printf": { parameters: ["buffer", "buffer"], result: "void" }
  }
);

const format = new TextEncoder().encode("%s\n\0");
const str = new TextEncoder().encode("Hello World\0");

dylib.symbols.printf(format, str);

Discussion