[Haskell-cafe] Foreign function Intf./GHC newbie question
John Zenger
ofzsfd at hotmail.com
Fri Nov 25 21:59:41 EST 2005
Hours of poring over documentation has failed to provide me with the answer
to what I am sure is a simple question for most of you. Your help is
appreciated.
I want to compile a Haskell program that calls a foreign C function. I'm
using GHC. When GHC links, it says it can't find my C function. That is
not surprising, because I can't figure out how I'm supposed to tell GHC
where to find my C function.
This is what I've got:
------ FILE: ffi.hs
{-# OPTIONS -fglasgow-exts #-}
{-# OPTIONS -#include "myc.h" #-}
module Main where
foreign import ccall "supernumber" supernumber :: Int
bongo :: Int
bongo =
supernumber + 1
main = do
putStrLn (show bongo)
------ FILE: myc.c
static int supernumber()
{
return(72);
}
------ FILE: myc.h
static int supernumber();
------- END OF FILES
When I do "ghc ffi.hs," it comes back: "ffi.o(.text+0xa8):fake: undefined
reference to `supernumber' "
I am guessing that I need to tell it where myc.c is. Perhaps I have to
compile myc.c first using gcc? That seems inconvenient. Any hints?
I am using Windows XP and GHC 6.4, if that matters.
_________________________________________________________________
Is your PC infected? Get a FREE online computer virus scan from McAfee®
Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
More information about the Haskell-Cafe
mailing list