Karim BELABAS on Thu, 17 Apr 2003 00:36:21 +0200 (MEST)


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

Re: Cygwin + DLL


On Sun, 6 Apr 2003, Ilya Zakharevich wrote:
> On Sun, Apr 06, 2003 at 05:31:00PM +0200, Karim BELABAS wrote:
> >   I have downloaded a recent Cygwin version to try and build that ellusive
> > libpari.dll, which has been periodically requested, and which I had been
> > unable to build so far [ actually, I could get the DLL to build, but gp-dyn
> > crashed ].
>
> The recent Math::Pari build DLLs not only with Cygwin, but with mingw
> and M$ cl as well.  So the simplest way out may be to modify the
> export list (FUNCLIST of the toplevel Makefile.PL) so that the
> resulting DLL works with gp-dyn.

I checked out Math-Pari-2.010402 (dated Mar 21 2003, which looked recent
enough) and I can't find FUNCLIST anywhere.

> > 1) install() does not work with gp-sta. install itself seems to behave
> > correctly, but the DLL is apparently not properly loaded and gp-sta segfaults
> > when calling the installed function [ later, it actually crashed XP... ].
> > Since gp-dyn is (much smaller and) a little faster than gp-sta, it is not a
> > major problem. I changed Configure to build gp-dyn.exe by default.
>
> Did you create the export list for the EXE file?  [This does not work
> on OS/2, so I can't be of more assistance; but this is reported to
> work on Win32.]

I hardly did anything: I simply call

  gcc -shared -Wl,--out-implib=\$(LIBPARI_SO)\$(_A),--export-all-symbol

which should do all the necessary magic [ the --export-all-symbol may be
overkill ]. Linking gp-sta.exe with or without the import library
(libpari.dll.a above) doesn't change a thing: dlopen() works, but calling any
installed routine produces a SEGV.

    Karim.
-- 
Karim Belabas                     Tel: (+33) (0)1 69 15 57 48
Dép. de Mathématiques, Bât. 425   Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud              http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France)            http://www.parigp-home.de/  [PARI/GP]