Chciałbym stworzyć aplikację Haskell z guzikiem .NET. Chciałbym użyć Cabal jak mój narzędzie build wykorzystać to zarządzanie pakiet itd. Myślę, że część Haskell powinien być wykonywalny, który wzywa do kodu .NET jak:Tworzenie aplikacji Haskell z GUI .NET
ten unika konieczności ręcznej zainicjować Haskell RTC jak opisano tutaj: http://www.haskell.org/ghc/docs/7.0.3/html/users_guide/win32-dlls.html
Cabal nie można łatwo produkować dLL Windows: http://www.haskell.org/haskellwiki/Cabal/Developer-FAQ#Building_DLLs__with_Cabal
Znalazłem to dość łatwe do stworzenia Haskell wykonywalnych .NET tak nazywać Korzystanie hs-dotnet, ale potrzebuję również mojego kodu GUI do ponownego połączenia z Haskell. Miałem nadzieję osiągnąć to za pomocą komendy Haskell "export zagranicznych", a następnie wywołać tę funkcję eksportu za pośrednictwem natywnego współdziałania .NET. Jednak funkcja "eksportu zagranicznego" nie wydaje się tworzyć punktu wejścia w pliku wykonywalnym, nie widzę punktu wejścia, gdy robię dumpbin /EXPORTS
na wynikowym pliku wykonywalnym. Nie jestem pewien, czy to dlatego, że GHC tworzy tylko punkt wejścia podczas tworzenia biblioteki dll za pomocą przełącznika -shared
lub czy cabal dodaje flagę, która blokuje tworzenie punktu wejścia.
Sądzę więc, że pytanie brzmi: jak wymusić na GHC tworzenie punktów wejścia w pliku wykonywalnym Windows? A może lepiej wykorzystałbym plik wykonywalny .NET, wykonując niezbędne kroki, aby stworzyć bibliotekę Haskell z kabałą i ręcznie zainicjować Haskell RTC?
Naprawdę chcesz kodować w .net i w haskell, które biorę? Następnie chciałbym zasugerować, aby dostać twój haskell w dll i wywołać funkcje z .net. Twój punkt 1 jest łatwy do pokonania, a nawet jeśli jest dobry, nadal musisz użyć czegoś innego, aby zbudować swoją .net część, więc twój punkt 2 jest bardziej wskazówką (tj. Nie używaj go) – Jonke