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

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to