<div dir="auto">You're calling gcc my hand, which means you have to tell it which packages your source need. <div dir="auto"><br></div><div dir="auto">Pass it "-package directory" and it should work. </div><div dir="auto"><br></div><div dir="auto">Tamar<br><br><div data-smartmail="gmail_signature" dir="auto">Sent from my Mobile</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 11, 2019, 11:57 Kees Bleijenberg <<a href="mailto:K.Bleijenberg@lijbrandt.nl">K.Bleijenberg@lijbrandt.nl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="NL" link="#0563C1" vlink="#954F72"><div class="m_-6065090672777258572WordSection1"><p class="MsoNormal"><span lang="EN-US">HI all,<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">I try to create a dll with ghc (ver 8.6.5)  on Windows 7 64 bits. I ‘am using the dll with loadLibrary in a cpp program in Visual Studio. I create the dll with: <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">ghc Vogels.hs <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">ghc -c StartEnd.c<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">ghc --make -static -shared -fPIC Vogels.o StartEnd.o -o Vogels.dll <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">StartEnd.o defines HsStart and HsEnd to initialize and close the Haskell runtime.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">This works. I can create the dll and use the dll in VS.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">But, if I replace in Vogels.hs the line b=True with   b <- doesFileExist vogelsFn, creating the dll fails with error message: <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Vogels.o:fake:(.text+0x35c): undefined reference to `directoryzm1zi3zi3zi2zmB9tglvOQ6L9Cf7zzVEJ1S6t_SystemziDirectory_doesFileExist_closure' <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Vogels.o:fake:(.text+0x37d): undefined reference to `directoryzm1zi3zi3zi2zmB9tglvOQ6L9Cf7zzVEJ1S6t_SystemziDirectory_doesFileExist_closure' <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Vogels.o:fake:(.data+0xd0): undefined reference to `directoryzm1zi3zi3zi2zmB9tglvOQ6L9Cf7zzVEJ1S6t_SystemziDirectory_doesFileExist_closure'  <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">It looks like GHC can’t find the Directory package. I’ve installed this package. What can I do about it and how can I find out  the dependencies in a *.hs or *.o file? Almost all documentation about dll’s is about Linux or about using dll’s in Haskell.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">Kees  <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">                                                                                                                                            <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">{-# LANGUAGE BlockArguments #-}<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">{-# LANGUAGE ForeignFunctionInterface #-}<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">module Vogels (   <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">   loadVogels<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">) where <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">   <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">import System.Directory<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">import Foreign.Ptr<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">import Foreign.Storable<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">import Foreign.C.String<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">loadVogels :: String  -> IO (Either String String)<u></u><u></u></span></p><p class="MsoNormal">loadVogels vogelsFn = do<u></u><u></u></p><p class="MsoNormal">   -- b <- doesFileExist vogelsFn<u></u><u></u></p><p class="MsoNormal">    <span lang="EN-US">let b=True<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">    if b <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">    then return $ Left $ "Can\'t find " ++ vogelsFn<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">    else do <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">            txt <- readFile vogelsFn<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">            return $ Right txt<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">loadVogelsFFI :: Ptr Int -> CString -> IO CString <u></u><u></u></span></p><p class="MsoNormal">loadVogelsFFI messageKind vogelsFnFFI = do <u></u><u></u></p><p class="MsoNormal">   vogelsFn  <- peekCString vogelsFnFFI<u></u><u></u></p><p class="MsoNormal">   <span lang="EN-US">eitherRes <- loadVogels vogelsFn <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">   case eitherRes of <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">      Left errMsg -> do <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">            poke messageKind 1<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">            newCString errMsg<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">      Right txt ->  do <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">            poke messageKind 0<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">            newCString txt<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US">foreign export ccall loadVogelsFFI :: Ptr Int -> CString -> IO CString<u></u><u></u></span></p></div><div id="m_-6065090672777258572DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><br> <table style="border-top:1px solid #d3d4de">
        <tr>
      <td style="width:55px;padding-top:18px"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank" rel="noreferrer"><img src="https://ipmcdn.avast.com/images/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif" alt="" width="46" height="29" style="width:46px;height:29px"></a></td>
                <td style="width:470px;padding-top:17px;color:#41424e;font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:18px">Virusvrij. <a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" style="color:#4453ea" target="_blank" rel="noreferrer">www.avast.com</a>             </td>
        </tr>
</table>
<a href="#m_-6065090672777258572_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2" width="1" height="1" rel="noreferrer"> </a></div></div>_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>