From 9f605830d29d3e26d466e6723212944be8f74802 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Wed, 30 Sep 2020 23:55:04 +0800 Subject: [PATCH] feat: add load.c --- live-reload-rust/load.c | 24 ++++++++++++++++++++++++ live-reload-rust/load.c-compile.sh | 1 + 2 files changed, 25 insertions(+) create mode 100644 live-reload-rust/load.c create mode 100755 live-reload-rust/load.c-compile.sh diff --git a/live-reload-rust/load.c b/live-reload-rust/load.c new file mode 100644 index 0000000..5258a0a --- /dev/null +++ b/live-reload-rust/load.c @@ -0,0 +1,24 @@ +#include +#include + +// C function pointer syntax is... something. +// Let's typedef our way out of this one. +typedef void (*greet_t)(const char *name); + +int main(void) { + // what do we want? symbols! + // when do we want them? at an implementation-defined time! + void *lib = dlopen("./main-greet", RTLD_LAZY); + if (!lib) { + fprintf(stderr, "failed to load library\n"); + return 1; + } + greet_t greet = (greet_t) dlsym(lib, "greet"); + if (!greet) { + fprintf(stderr, "could not look up symbol 'greet'\n"); + return 1; + } + greet("venus"); + dlclose(lib); + return 0; +} diff --git a/live-reload-rust/load.c-compile.sh b/live-reload-rust/load.c-compile.sh new file mode 100755 index 0000000..2d0994d --- /dev/null +++ b/live-reload-rust/load.c-compile.sh @@ -0,0 +1 @@ +gcc -Wall load.c -o load