> > 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