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