1 #include <cassert> 2 #include <dlfcn.h> 3 #include <string> 4 5 extern struct Foo imported; 6 main()7int main() { 8 // LIB_NAME defined on commandline 9 std::string libname{"./"}; 10 libname += LIB_NAME; 11 12 void *handle = dlopen(libname.c_str(), RTLD_NOW); 13 struct Foo *foo = (struct Foo *)dlsym(handle, "global_foo"); 14 assert(foo != nullptr); 15 16 // Unload dylib (important on Linux so a program re-run loads 17 // an updated version of the dylib and destroys the old lldb module). 18 dlclose(handle); 19 20 return 0; 21 } 22