C プログラムから dlopen で C++ 共有ライブラリにアクセスする場合は、共有ライブラリが適切な C++ 実行時ライブラリ (-compat=4 の場合は libC.so.5、-compat=5 の場合は libCrun.so.1) に依存していなければなりません。
そのためには、共有ライブラリを構築するときに、-compat=4 の場合は -lc、-compat=5 の場合は -lCrun を次のようにコマンド行に追加します。
demo% CC -G -compat=4 ... -lC demo% CC -G -compat=5 ... -lCrun
共有ライブラリが例外を使用している場合には、ライブラリが C++ 共有ライブラリに依存していないと、C プログラムが正しく動作しないことがあります。
共有ライブラリを dlopen で開く場合は、RTLD_GLOBAL を使用しないと、例外は機能しません。