Library/cinvoke
From HaskellWiki
cinvoke is a library allowing C functions of types only known at runtime to be called from Haskell.
As an example is worth a thousand words:
module Main where import Foreign.Ptr import Foreign.CInvoke main = do cxt <- newContext libc <- loadLibrary cxt "libc.so.6" malloc <- loadSymbol libc "malloc" memset <- loadSymbol libc "memset" free <- loadSymbol libc "free" let sz = 2^30 p <- cinvoke malloc (retPtr retVoid) [argCSize sz] cinvoke memset (retPtr retVoid) [argPtr p, argCInt 0, argCSize sz] cinvoke free (retPtr retVoid) [argPtr p]
