> > We are trying to create a dynamic library of extensions to PHP 4.02.
> > This library implements a C++ class and has a C interface using the "Extern C"
> > declaration.
> > This library is linked with libstdc++.so.3 .
> > 
> > If the library is called in a C program => no trouble.
> > If the library is called from PHP with the "dlopen()" function =>
> > [Warning: Unable to load dynamic library
> > '/users/em/ftp/php/test_cpp/debug/libphptest.so' - /usr/lib/libstdc++.so.3:
> > Undefined symbol "__ti9exception" in
> > /usr/local/httpd/htdocs/www/Iti_q/testso.php on line 2
> 
> This is because FreeBSD uses an archive library "libgcc.a" instead
> of a shared library.  That means that everything from libgcc which
> is needed by your shared libraries had better already be linked into
> the main program.  The right solution is for us to use a shared
> library for libgcc.

At one point libgcc was shared (FreeBSD 1.*), and it caused way more
problems that it solved.




Nate


  (Note to eager committers: don't do this without
> coordinating with obrien.  There are ramifications that aren't
> obvious.)
> 
> As a work-around, try adding this to your main program.  (I am
> assuming it is a C++ program too.)
> 
>     extern void terminate(void);
>     void (*kludge_city)(void) = terminate;
> 
> Another possibility would be to link explicitly with libgcc when
> creating your dynamic library:
> 
>     cc -shared -o libphptest.so ... -lgcc
> 
> That might cause other problems, but probably not.
> 
> John
> -- 
>   John Polstra                                               [EMAIL PROTECTED]
>   John D. Polstra & Co., Inc.                        Seattle, Washington USA
>   "Disappointment is a good sign of basic intelligence."  -- Chögyam Trungpa
> 
> 
> 
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-hackers" in the body of the message


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to