C++ User's Guide

Using dlopen to Access a C++ Library From a C Program

If you want to dlopen() a C++ shared library from a C program, make sure that the shared library has a dependency on the appropriate C++ runtime (libC.so.5 for -compat=4, or libCrun.so.1 for -compat=5).

To do this, add -lC for -compat=4 or add -lCrun for -compat=5 to the command line when building the shared library. For example:


demo% CC -G -compat=4 ... -lC
demo% CC -G -compat=5 ... -lCrun

If the shared library uses exceptions and does not have a dependency on the C++ runtime library, your C program might behave erratically.


Note -

When shared libraries are opened with dlopen, RTLD_GLOBAL must be used for exceptions to work.