FFI Help
Glynn Clements
glynn.clements@virgin.net
Wed, 4 Jun 2003 08:32:24 +0100
Matthew Donadio wrote:
> I am just starting to experiment with FFI, and am running into a
> problem. I was to create an FFI to the lgamma(3) found in many of the
> newer libm implementations. My code follows the sig.
>
> The lgamma function works. The gamma function core dumps (I am using
> ghc 5.04.3) on me. gdb reports a SIGSEGV in signgam(), but I'm not sure
> why. I believe that I need to use the monad because signgam is only
> valid after lgamma returns.
>
> Does anyone have an idea what I am doing wrong?
>
> Thanks.
>
> --
> Matthew Donadio <m.p.donadio@ieee.org>
>
> > module Gamma (gamma, lgamma) where
>
> > import System.IO.Unsafe
>
> > foreign import ccall "math.h lgamma" lgammaC :: Double -> IO Double
> > foreign import ccall "math.h signgam" signgamC :: IO Int
signgam is an "int" variable, but this assumes that it is a function
of type "int signgam(void)".
Write a C wrapper "int get_signgam(void) { return signgam; }" and
import that.
--
Glynn Clements <glynn.clements@virgin.net>