
On 2008.01.09 17:07:46 +0100, Peter Verswyvelen
I while I ago I sent an email regarding hs-plugins not working on windows.
I now tried to directly use GHC API, but I also failed.
The following program (which might be buggy, I copy/pasted from various sources)
import DynFlags import GHC
main = defaultErrorHandler defaultDynFlags $ do session <- newSession (Just "d:/app/ghc-6.8.2") flags <- getSessionDynFlags session (flags, _) <- parseDynamicFlags flags [] GHC.defaultCleanupHandler flags $ do setSessionDynFlags session flags{ hscTarget=HscInterpreted } prelude <- findModule session (mkModuleName "Prelude") Nothing setContext session [] [prelude] runStmt session "let n = 2 + 2" RunToCompletion -- n is bound runStmt session "n" RunToCompletion -- 4 is printed (note "it" is bound)
gives the following error when run from GHCi *Main> :load "l:/test.hs" [1 of 1] Compiling Main ( l:/test.hs, interpreted ) Ok, modules loaded: Main. *Main> main
GHCi runtime linker: fatal error: I found a duplicate definition for symbol _forkOS_entry whilst processing object file d:/app/ghc-6.8.2/lib\base-3.0.1.0/HSbase-3.0.1.0.o This could be caused by: * Loading two different object files which export the same symbol * Specifying the same object file twice on the GHCi command line * An incorrect `package.conf' entry, causing some object to be loaded twice. GHCi cannot safely continue in this situation. Exiting now. Sorry.
Process haskell finished
Is my code incorrect, or is this a (known?) bug in GHC 6.8.2 on Windows? I haven't tried the Linux version yet.
NOTE: The program *does* run fine when compiling via GHC --make.
Thanks, Peter
I think your installation is just buggy. I ran it here, and it compiles fine (although it doesn't run, as Linux obviously has "d:/app/ghc-6.8.2") and runs, printing "4" if I replace the string with "/usr/lib/ghc-6.8.2". Could it be that your GHCi is not the 6.8.2 one, or your path incorrect? -- gwern & b AHPCRC Playboy Dolch += SG530 Karimov CNCIS beef