Je dois créer dll pour ce moduleHaskell compilation dll
module MarketNews where
import Foreign
import Foreign.C.Types
import Foreign.C.String
import HighAPI(getNextNewsInfo)
getNextNewsInfoM :: IO CString
getNextNewsInfoM = getNextNewsInfo >>= \x -> newCString x
foreign export stdcall getNextNewsInfoM :: IO CString
Je compilé:
C:\Users\test_8\Documents\Project\MarketNews\src>ghc --make MarketNews.hs -fglasgow
-exts
aussi j'ai dllMain.o qui a créé comme http://haskell.org/ghc/docs/6.12.1/html/users_guide/win32-dlls.html et MyDef.def. Après que je fais suivant:
C:\Users\test_8\Documents\Project\MarketNews\src>ghc -shared -o MarketNews.dll M
arketNews.o MarketNews_stub.o dllMain.o MyDef.def
Creating library file: MarketNews.dll.a
Warning: resolving _getNextNewsInfoM by linking to [email protected]
Use --enable-stdcall-fixup to disable these warnings
Use --disable-stdcall-fixup to disable these fixups
MarketNews.o:fake:(.text+0x6b): undefined reference to `HighAPI_getNextNewsInfo_
closure'
MarketNews.o:fake:(.text+0x12d): undefined reference to `__stginit_HighAPI_'
MarketNews.o:fake:(.data+0x10): undefined reference to `HighAPI_getNextNewsInfo_
closure'
collect2: ld returned 1 exit status
Comme je comprends faild parce il doit y avoir un seul module racine. Mais pourquoi puis-je utiliser Foreign. *? Pourquoi est-ce que je ne peux pas utiliser le module HighAPI? Dois-je écrire tout le programme dans un fichier? Merci.
Merci. J'ai lu ce blog. Je n'ai pas vu l'exemple comment créer une DLL avec un lien vers d'autres modules. – Anton
Anton: vous devez lier ensemble * tous les modules de votre bibliothèque. par exemple. 'ghc -shared -o MarketNews.dll HighAPI.o MarketNews.o MarketNews_stub.o dllMain.o MyDef.def'. –
Ça ne marche pas, je l'ai essayé encore et encore. Je reçois des erreurs comme: HighAPI.o: faux :(texte + 0x14f):. Undefined reference to '__stginit_datetimezm0zi2_D ataziDateTime_ » collect2: ld retourné 1 état de sortie – Anton