2 - create a main() in c.. use "extern" to reference the external symbol in the .o files and call it from main.
The symbols in the object files produced by luajit or whatever need to be exported/ visible.. (are they mangled?)
3 - create a object file for main.c
4 - link the .o created from luajit(or whatever, dart?) and main.o together
If the linker cant find the external symbol it wont link to a binary (so you need to know how, in what names they are exported.. use objdump to lookup for symbols)
ld has a -e argument [−4] (and MSVC's link has /ENTRY [37]). Otherwise, if there is a function with the expected name, calling convention and arguments in the object file I doubt the linker will complain.