[C2hs] help a newbie?

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Thu Feb 22 15:57:07 EST 2007


On Tue, 2007-02-20 at 20:40 -0500, Eric Sessoms wrote:
> I'm working on a problem that looks, to my eye, identical to the
> example in section 2.10 of the documentation
> http://www.cse.unsw.edu.au/~chak/haskell/c2hs/docu/c2hs-2.html#ss2.10
> 
> --- cut here ---
> module Test where
> 
> #c
> typedef struct {
>   int dummy;
> } fitsfile;
> 
> int ffclos(fitsfile *fptr, int *status);
> #endc
> 
> {# pointer *fitsfile as FitsFile newtype #}
> 
> {# fun ffclos { `FitsFile', `Int' } -> `Int' #}
> --- cut here --
> 
> But running c2hs I get an error message that I haven't been able to make use of:
> 
> Test.chs:13: (column 17) [ERROR]
>   >>> Missing "in" marshaller!
>   There is no default marshaller for this combination of Haskell and C type:
>   Haskell type: FitsFile
>   C type      : (FitsFile)

I'm not sure if c2hs is supposed to work out the default marshaler
automatically, you'd have to ask Manuel, but it does work if you specify
the marshaler explicitly:

{# fun ffclos { withFitsFile `FitsFile', `Int' } -> `Int' #}

Duncan



More information about the C2hs mailing list