c++ - How to use shared libraries in a static library without forcing end-users to link against these? -
let's i'm working on static library foo.a , makes use of function in bar.so . how build library in such way uses foo.a in project doesn't have explicitly link against bar.so ? what can in libfoo.a make call dlopen dynamically link libbar.so . then, use dlsym locate function want use. typedef void (*barfunctiontype) (const char *); functiontype barfunction; void initialize_foo_lib () { void *h = dlopen("libbar.so", rtld_lazy); barfunctiontype barfunction = (barfunctiontype) dlsym(h, "barfunction"); // note scary looking cast function pointer. //... rest of code can call barfunction } libbar.so should c library, or function should extern "c" if c++ library, find function name properly. otherwise need mangle name find function dlsym . can use objdump -t on library check if names in library mangled. realize there still dependency on libbar.so , baked static library. user of libfoo.a not have add -lbar link line when link in -lfoo ...