Subject: Re: C shared lib question
To: Johnny C. Lam <lamj@stat.cmu.edu>
From: Jason R Thorpe <thorpej@shagadelic.org>
List: current-users
Date: 03/08/2000 20:04:44
On Wed, Mar 08, 2000 at 09:59:10PM -0500, Johnny C. Lam wrote:
> I'm porting the ODBC driver for PostgreSQL to NetBSD, but I'm having
> the following problem. The code currently defines two functions _init
> and _fini to call "constructor" and "destructor" code for the shared
> object:
>
> BOOL _init (void)
> {
> getGlobalDefaults(DBMS_NAME, ODBCINST_INI, FALSE);
> return TRUE;
> }
>
> Is there a more portable C construct to ensure that a function is
> called when a shared library is loaded, much like a global static C++
> object's constructor?
I think that's pretty much how you do it... ELF provides this functionality.
Tho, in GNU C, you can use attributes, like this:
void my_contructor(void) __attribute__((__constructor__));
void my_destructor(void) __attribute__((__destructor__));
--
-- Jason R. Thorpe <thorpej@shagadelic.org>