libffi-d: D binding to libffi
Alex Rønne Petersen
xtzgzorex at gmail.com
Thu Dec 15 09:38:21 PST 2011
On 15-12-2011 09:14, Alex Rønne Petersen wrote:
> Hi Andrej,
>
> Sorry for the late response (for some reason, my news reader had marked
> this thread as read).
>
> > There's a few DLL's floating around for libffi, however none of them
> > seem to have the symbol "ffi_prep_cif_var" which seems to be needed
> > for variadic functions.
> >
> > I can version variadic support out and compile your bindings, the
> > tests will work fine on win32.
> > I've also tried compiling libffi on my own but had no success.
>
> ffi_prep_cif_var doesn't seem to be available in any Windows builds
> (Cygwin, MinGW, or otherwise) of libffi for whatever reason. I'll
> version it out on Windows for now, as you suggested.
>
> I haven't managed to get a MinGW build of libffi working so far, but I
> did manage to get one working under Cygwin. Build libffi like this:
>
> $ ./configure --enable-static=yes --enable-shared=no
> $ make
>
> Now you should have i686-pc-cygwin/.libs/libffi.a.
>
> You'll also need your Cygwin installation's libgcc.a:
>
> $ cd i686-pc-cygwin/.libs
> $ ar -r libffi.a /lib/gcc/i686-pc-cygwin/4.5.3/libgcc.a
>
> Now you need to convert the .a to an OMF .lib. You'll need objconv.zip
> from this page: http://www.agner.org/optimize/
>
> $ objconv -fomf -nu libffi.a libffi.lib
>
> libffi.lib should now be linkable with DMD.
>
> (I long for the day DMD doesn't use OMF.)
>
> > I can make a pull with the import lib, the DLL (it's only 99KB), and
> > the versioned out sections, if you'd like that.
>
> I prefer keeping the binaries out of Git for various portability,
> licensing, etc issues. That being said, I think we could upload
> .libs/.dlls as downloads on the GitHub page. The question is whether we
> should put .libs or .dlls there? Personally, I think .libs are easier to
> work with when using DMD.
>
> Thanks for the input!
>
> - Alex
Correction: It seems as though that function has disappeared on my Linux
system! It has most probably been deprecated entirely, so I have just
removed it from libffi-d.
- Alex
More information about the Digitalmars-d-announce
mailing list