gpt4 book ai didi

c - 在 ghci 中导入 inline-c 模块

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:54 25 4
gpt4 key购买 nike

我想在 ghci session 中导入一些 inline-c 生成的函数。所有源文件和目标文件都在 src/ 子文件夹中,但出现导入错误:

src/Main.hs:3:8:
Could not find module ‘Test1’

我包括所有文件以供引用。提前致谢

主要.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,上面的代码现在可以编译了。然而,下一个大问题是如何隔离每次调用中的影响,即以一致的方式重置值。

最佳答案

ghci 调用的一个最小改动就完成了这项工作:

ghci src/Main.hs src/Test1_c.o -isrc/ 

这意味着我们添加了一个带有 -i 标志的包含路径来修复 Could not find module 错误,并显式链接从 生成的目标文件>inline-c 片段。

关于c - 在 ghci 中导入 inline-c 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com