// use dynamic loader to lookup function by name and return pointer-to-function // compile with -rdynamic -ldl -lm // // R. Perry, March 2019 // #include #include "lookup.h" double sqr( double x) { return x*x; } // square void try( const char *name) // try calling a function { Func g = lookup( name); if(g) { double x = 2; printf("%s(%g) = %g\n", name, x, g(x) ); } } int main( void) { try( "sqr"); try( "abc123"); try( "sqrt"); } /* sample output, linked with math library, -lm sqr(2) = 4 dlsym: ./main: undefined symbol: abc123 sqrt(2) = 1.41421 not linked with math library: sqr(2) = 4 dlsym: ./main: undefined symbol: abc123 dlsym: ./main: undefined symbol: sqrt */