genexlib.o:fake:(.text+0xd1): undefined reference to `__stginit_regexzmgenexzm0zi3zi2_RegexziGenex_'
Creating library file: genexlib.dll.a
collect2: ld returned 1 exit status
and get undefined reference.
But If I try to compile the executable from similar code:
-- genexlib.hs
{-# LANGUAGE BangPatterns, ForeignFunctionInterface #-}
-- module GenexLib where
import Regex.Genex
import System.IO
import System.Environment
defaultRegex :: String
defaultRegex = "a(b|c)d{2,3}e*"
main :: IO ()
main = do
hSetBuffering stdout NoBuffering
args <- getArgs
case args of
[] -> do
prog <- getProgName
if prog == "<interactive>" then run [defaultRegex] else do
fail $ "Usage: " ++ prog ++ " regex [regex...]"
rx -> run rx
run :: [String] -> IO ()
run regex = do
let s = genexPure regex
mapM_ print s
-- genexlib.hs end
>ghc --make genexlib.hs -O2
it's ok, no errors, and you can see in GHCi:
*Main> :main
"abdd"
"acdd"
"abddd"
"acddd"
"abddeee"
"acddeee"
"abdddeee"
"acdddeee"
"abddee"
"acddee"
"abdddee"
"acdddee"
"abdde"
"acdde"
"abddde"
"acddde"
Where is my mistake? What am I doing wrong?
In first case, when compiling shared dll, I tried to link libraries what I've found in `cabal' directory (like `libHSregex-genex-0.3.2.a') to work around errors but all in vain.