🙄
【Deno】FFI を利用して C 言語の printf を呼び出す
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