gpt4 book ai didi

Haskell,链接两个文件时出错

转载 作者:行者123 更新时间:2023-12-02 16:52:36 24 4
gpt4 key购买 nike

我开始阅读有关 Haskell 的书“Real World Haskell”,但我遇到了一个无法解决的问题。我有两个文件。第一个 SimpleJSON.hs 包含以下代码:

module SimpleJSON
(
JValue(..)
, getString
, getInt
, getDouble
, getBool
, getObject
, getArray
, isNull
) where

data JValue = JString String
| JNumber Double
| JBool Bool
| JNull
| JObject [(String, JValue)]
| JArray [JValue]
deriving (Eq, Ord, Show)

getString :: JValue -> Maybe String
getString (JString s) = Just s
getString _ = Nothing

getInt (JNumber n) = Just n
getInt _ = Nothing

getDouble (JNumber n) = Just n
getDouble _ = Nothing

getBool (JBool b) = Just b
getBool _ = Nothing

getObject (JObject o) = Just o
getObject _ = Nothing

getArray (JArray a) = Just a
getArray _ = Nothing

isNull v = v == JNull

我使用“ghc -c SimpleJSON.hs”来获取对象文件。然后在我的 Main.hs 中

module Main (main) where

import SimpleJSON

main = print (JObject [("foo", JNumber 1), ("bar", JBool False)])

我正在导入第二个文件,但是当我运行“ghc -o simple Main.hs SimpleJSON.o”来获取 .exe 文件时,出现以下错误:

collect2.exe: error: ld returned 1 exit status
`gcc.exe' failed in phase `Linker'. (Exit code: 1)

感谢您的帮助

最佳答案

编译器应该通过 import SimpleJSON 语句识别出 Main 依赖于 SimpleJSON。这意味着当您编译 Main.hs 时,SimpleJSON.hs 也将被编译并链接到生成的可执行文件中。

通过在命令行上显式指定 SimpleJSON.o,您可能会将该文件两次链接到生成的可执行文件中,这会导致您看到的失败。

ghc -o simple Main.hs 应该足以让您的程序链接。

关于Haskell,链接两个文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42654599/

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