Profiling makes FFI Marshalling of Doubles and Int64s fail

Bayley, Alistair Alistair_Bayley at
Wed Sep 15 05:20:15 EDT 2004

Thanks, including the header does fix it. I was lazy, as you can link quite
easily against a DLL without having to provide a header; just the import
decls suffice, plus -l and -L directives. I have had this problem (not using
the -I directive) in a different guise, when trying to optimise.

I've added the header to the foreign import decls e.g. foreign import
"sqlite.h sqlite3_open" ... I left it out earlier because this version of
the Sqlite library ships just as a DLL, with no accompanying header. I
downloaded the source and found one I could use (I *hope* it's the right
one), but it does make you wonder what C (and other) programmers who want to
use the library are expected to do...


-----Original Message-----
From: Roberto Zunino [mailto:zunino at] 


AFAICS, it seems as the asm code generator knows about the Haskell types 
and therefore knows how to fetch the bits correctly, while the via-C 
code generator simply uses the C function calls (without prototypes), so 
functions return types are defaulted to int.

Also, you can try adding -Wall and see if the C compiler warns about 
this (mine does).

The GHC user's guide (section 8.2.2) is also insightful. It seems that 
using C headers is pretty much required, or, as the guide itself says, 
"You're crazy not to do it". ;-)

Roberto Zunino.

Confidentiality Note: The information contained in this 
message, and any attachments, may contain confidential 
and/or privileged material. It is intended solely for the 
person(s) or entity to which it is addressed. Any review, 
retransmission, dissemination, or taking of any action in 
reliance upon this information by persons or entities other 
than the intended recipient(s) is prohibited. If you received
this in error, please contact the sender and delete the 
material from any computer.

More information about the Glasgow-haskell-users mailing list