
Simon Marlow wrote:
Also the User's Guide has a snippet about it:
http://www.haskell.org/ghc/docs/latest/html/users_guide/sec-ffi-ghc.html#gla...
and this FAQ entry:
http://haskell.org/haskellwiki/GHC/FAQ#When_I_use_a_foreign_function_that_ta....
I've tried various command lines to try to get GHC to actually include the header when compiling, but nothing seems to work, and I still get the error message about implicit function declarations, for example when using: C:\ghc\ghc-6.4\bin\ghc.exe -fglasgow-exts -fffi -#include Duma.h --make main.hs -ddump-simpl -O2 -fvia-C -optl-mwindows -optl-lDuma -optl-L"c:\dll" #ifdef __DUMA_H #define __DUMA_H #ifdef __cplusplus extern "C" { #endif void duma_vertex3f(HsFloat x, HsFloat y, HsFloat z); #ifdef __cplusplus } #endif #endif // __DUMA_H -- declared in Duma.hs foreign import ccall "Duma.h" duma_vertex3f :: Float -> Float -> Float -> IO () I've tried removing the "Duma.h" from the foreign import but that doesn't help. Also, according to the FFI, for portability people are supposed to always specify the header in the foreign import, so the fact that when you do this, GHC disables cross module inlining is a real problem: you are forced to write non-portable code. Anyway all I'm interested in at the moment is trying to find a command line which will cause GHC to compile everything using the header "Duma.h" so that there will be no warning messages about implicit function declarations. Is there anything else I could try? Thanks, Brian.