我希望使用FFI调用一个C单头文件库。
这里是Nuk.hs
。
{-# LANGUAGE CPP, ForeignFunctionInterface #-}
module Main where
import Foreign
import Foreign.C.Types
foreign import ccall unsafe "nuklear.h nk_sin"
c_nk_sin:: IO CFloat
main = print $ c_nk_sin (5)
在同一个目录下,我有一个名为
nuklear.h
的文件。当我执行
stack ghc Nuk.hs
时,我会得到以下结果。[1 of 1] Compiling Main ( Nuk.hs, Nuk.o )
Linking Nuk ...
Nuk.o:r1Rq_info: error: undefined reference to 'nk_sin'
collect2: error: ld returned 1 exit status
`gcc' failed in phase `Linker'. (Exit code: 1)
我该怎么解决这个问题?
.o
文件吗?你需要将它们链接在一起,例如:stack ghc Nuk.hs cside.o
。如果你不想进行链接,可以使用-c
选项。(之后再进行链接) - chi