Well I tried this statement ghc --mk-dll -fglasgow-exts -fffi -I. --make ExternLib.hs
It only compiled the object file, creating ExternLib.o, but it did not create the stub file or attempt to link in the dependent packages. I then went back to this, ghc --mk-dll -fglasgow-exts -fffi -o netsim.dll ExternLib.o ExternLib_stub.o dllNet.o src1.o src1_stub.o src2.o -package parsec -optl-lmatrixstack -optl-L"." This removed the undefined references to the parsec package, however I still can't get it to link to the matrixstack.lib and matrixstack.dll. matrixstack.lib was created using dlltool and does link just fine if linking the sources into a stand alone executable instead of a .dll. I did try to include matrixstack.lib on the command line directly as well but that ended up with the same problem. Is it possible to just compile everything into C? I'd need to link to the haskell runtime libraries somehow. Esa Ilari Vuokko wrote: > > Hi > > On 9/27/06, Matthew Bromberg <[EMAIL PROTECTED]> wrote: >> though I have a binary build of ghc 6.5 > > If you have new ghc 6.5, you can use --mk-dll with --make, in case that > helps. > >> ghc --mk-dll -o netsim.dll ExternLib.o ExternLib_stub.o dllNet.o src1.o >> src1_stub.o src2.o -optl-lmatrixstack -optl-L"." >> >> My external C library is in matrixstack.dll and it has a corresponding >> static link stub library matrixstack.lib in the same directory as all >> the sources. It has references in one of the sources (say src1.hs). > > If I recall correctly, to link Ms-style import libs, you must specify > them as object > files (ie no -optl-lfoo, but just foo.lib) or make mingw-style import > libs via .def > files. But as you've not run into this yet, maybe it works for you like > that. > >> Unfortunately I get a host of undefined references to basically all the >> functions in matrixstack.dll and also some undefined references of the >> form >> Parsefile.o:ghc2996_0.hc:(.text+0x130): undefined reference to >> `TextziParserCombinatorsziParsecziError_show_closure' >> Parsefile.o:ghc2996_0.hc:(.text+0x220): undefined reference to >> `TextziParserCombinatorsziParsecziChar_spaces_closure' >> Parsefile.o:ghc2996_0.hc:(.text+0x24a): undefined reference to >> `TextziParserCombinatorsziParsecziChar_spaces_closure' >> Parsefile.o:ghc2996_0.hc:(.text+0x29c): undefined reference to >> `TextziParserCombinatorsziParsecziChar_spaces_closure' > > Add > -package parsec > to you ghc commandline. And similary for any other packages you used > while > compiling. > > HTH, > Esa > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > > -- View this message in context: http://www.nabble.com/Creating-DLLs-with-GHC-tf2342692.html#a6529535 Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe