1
我想在ghci會話中導入一些inline-c
生成的函數。所有的源文件和目標文件是在一個src/
子文件夾,但我得到導入錯誤:在ghci中導入inline-c模塊
src/Main.hs:3:8:
Could not find module ‘Test1’
我包括供參考的所有文件。在此先感謝
Main.hs
module Main where
import Test1
main =
test1
和功能需要進口
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
module Test1 where
import qualified Language.C.Inline as C
import Foreign.C.Types
C.include "<stdio.h>"
C.include "<math.h>"
test1 = do
s <- readAndSum n
[C.exp| void{ printf("Sum: %.2d\n", $(int s)) } |]
putStrLn $ "Sum: " ++ show s
readAndSum n =
[C.block| int {
int i, sum = 0, tmp;
for (i = 0; i < $(int n); i++) {
scanf("%d ", &tmp);
sum += tmp;
}
return sum;
} |]
生成文件:
main:
ghc -c src/Test1.hs
cc -c src/Test1.c -o src/Test1_c.o
ghci src/Main.hs src/Test1_c.o -isrc/
# ghci src/Main.hs -Lsrc/
更新:我已經固定的makefile ,上面現在編譯。然而,下一個大問題是如何隔離每次調用中的效果,即以一致的方式重置值。