Search Postgresql Archives

Re: Load C++ for functions?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/24/2010 10:29 PM, Elliot Chance wrote:

But the CREATE FUNCTION gives the error:
ERROR:  could not load library "/storage/Scripts/pgx/pgx.so": /storage/Scripts/pgx/pgx.so: undefined symbol: __gxx_personality_v0

How'd you build the C++ code? What was your compile command line? Does 'ldd pgx.so' list libstdc++ as a dependency? Are you for some reason compiling with -fno-exceptions? Is every single one of your C++ functions wrapped with an unconditional try/catch that converts any exceptions to error return codes/Pg elog() calls?

I've written Pg extension modules, but I've always done so by compiling the component containing PG_MODULE_MAGIC, PG_FUNCTION_INFO_V1, PG_FUNCTION_ARGS, etc as regular C, and having it call "extern C" functions in the C++ files linked into the shared object. I don't *think* this should make any difference, but I'm far from a C/C++ expert.

Postgres is no doubt trying to load a C++ linked library as C - is there a way to fix this?

AFAIK, dlopen() doesn't care if a library is C, C++, or BlueLanguage, so long as it provides standard ELF symbols and a C-compatible entry point.

--
Craig Ringer

--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux