尽管没有显示错误,GHC也不会生成二进制文件

时间:2013-09-09 05:48:38

标签: haskell ghc ffi

GHC告诉我它有效,但它不会生成二进制文件。我不知道为什么

$  ls
total 8
-rw-r--r--  1 drewgross  staff   361B  9 Sep 01:21 MouseMove.hs
$  ghc MouseMove.hs
[1 of 1] Compiling MouseMove        ( MouseMove.hs, MouseMove.o )
$  echo $?
0
$  ls
total 32
-rw-r--r--  1 drewgross  staff   926B  9 Sep 01:29 MouseMove.hi
-rw-r--r--  1 drewgross  staff   361B  9 Sep 01:21 MouseMove.hs
-rw-r--r--  1 drewgross  staff   5.7K  9 Sep 01:29 MouseMove.o

这是我的MouseMove.hs文件:

{-# LANGUAGE ForeignFunctionInterface #-}
module MouseMove where

import Foreign
import Foreign.C.Types

import Control.Applicative

foreign import ccall "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGRemoteOperation.h CGWarpMouseCursorPosition"
    c_warp :: CFloat -> CFloat -> IO CInt

main = print =<< (fromIntegral <$> c_warp 100 100)

我的GHC版本是

$  ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.6.3

有什么想法吗?没有错误消息我不知道该尝试什么。

1 个答案:

答案 0 :(得分:13)

如果有一个名为Main的模块和一个名为main的函数,GHC将创建一个程序。在您的情况下,您有main,但不在Main

module MouseMove移除MouseMove.hs标头,或将-main-is MouseMove.main传递给GHC。