rpav / cl-autowrap

(c-include "file.h") => complete FFI wrapper
BSD 2-Clause "Simplified" License
210 stars 41 forks source link

libffi on Windows #86

Open Zulu-Inuoe opened 6 years ago

Zulu-Inuoe commented 6 years ago

Hello,

While linking against an library using libffi for structure support, I receive the following error

Error creating CIF for FOO::BAR: :BAD-ABI

I traced this down to ffitarget.h and ffiw64.c in libffi and found the issue to be an incorrect value for autowrap.libffi:+ffi-default-abi+. This is an enum and the libffi spec files specify its value incorrectly as 2. The issue is that the generated spec files do not properly #define the flags used by libffi when building on Windows x64.

See ffitarget.h:80 for the definition of these enum values on the various platforms.

On Windows x64 this value should be 1, instead. Some other enum values should not be present, as well. I suspect this issue affects other platforms, as well.

Thanks!