* Cabal is a package and build system. Cabal is only involved in the creation of packages and the building of their contents. It does not manage packages.

+

* Cabal-Install installs cabal packages. It is distinct from Cabal (the build system). This often confuses new users. Furthermore, Cabal-Install is not a fully featured package manager. For example, it cannot install non cabal packaged dependencies, it cannot uninstall packages, nor can it automatically upgrade installations.

+

+

== Information for package users ==

+

*[[Cabal/Survival | A short and transient survival guide for Cabal users]]

*[[Cabal/How to install a Cabal package | How to install a Cabal package]]

*[[Cabal/How to install a Cabal package | How to install a Cabal package]]

+

*[http://coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html An Introduction to Cabal sandboxes]

This means that we have to do a bit of hackery to get Cabal to build a dll from a library. As long as we build a single DLL from the entire project the dll should behave as expected. Using the Setup.lhs listed below and following the directions listed above (the second link) I was able to use Visual Haskell to build a dll which I could load into Visual Basic for testing.

+

−

+

−

The following Setup.lhs should do the trick for most projects which consist of a single library which needs to be built as a dll. If you need to specify a dll export file you'll need to modify the function <tt>cmd</tt> to take this into account. Another possible addition is specifying a static dll. Check the ghc manual above.

Revision as of 20:08, 27 December 2013

1 Summary

Cabal is a package and build system. Cabal is only involved in the creation of packages and the building of their contents. It does not manage packages.

Cabal-Install installs cabal packages. It is distinct from Cabal (the build system). This often confuses new users. Furthermore, Cabal-Install is not a fully featured package manager. For example, it cannot install non cabal packaged dependencies, it cannot uninstall packages, nor can it automatically upgrade installations.