2015-10-22 26 views
8

Haskell'de yeni başlayan biriyim ve bir uygulama oluşturmak için stack numaralı telefonu deniyorum. GHC Linker hatası (yığın)

Linking .stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/sim-exe/sim-exe ... 
[...]/.stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/libHSsim-0.1.0.0-EmdGqYS9bXF9VefempSPEG.a(Lib.o):(.text+0x98f5): undefined reference to `simzuEmdGqYS9bXF9VefempSPEG_Linter_lint_info' 
[...]/.stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/libHSsim-0.1.0.0-EmdGqYS9bXF9VefempSPEG.a(Lib.o):(.data+0x5f0): undefined reference to `simzuEmdGqYS9bXF9VefempSPEG_Linter_lint_closure' 
collect2: error: ld returned 1 exit status 

etiket baktığımızda bu işlevinde kapatılmasına ilişkin olduğunu söylüyor: çalıştırıldığında

Ancak stack build bana bağlayıcı hataları verir

lint :: String -> [LintError] 
lint source = let 
    handleParseError :: ParseError -> [LintError] 
    handleParseError e = [LintError (fromSourcePos $ errorPos e) $ format e] 
    in 
    case parseSim source of 
     (Left error) -> handleParseError error 
     (Right prog) -> lintProgram prog 

Ama bir kapatma gerçekten orada değil Orada? Ben

lint _ = [] 

ile lint uygulanmasını değiştirirseniz gayet derler.

stack ghci dosyasını yürütebilirim ve tam olarak lint uygulamasının tam anlamıyla çalışabilirim. Neden bağlantı kuramıyor?

+6

Muhtemelen modül cabal dosyasına dahil değildir? – Yuras

+1

@Yuras yep, buydu ... Modülü 'açık modüller' altına ekledim ve şimdi çalışıyor - Bunu yapmak zorunda olduğumu bilmiyordum. Teşekkürler – DeX3

+2

@ DeX3 Bunu bir cevap olarak yazabilir ve kabul edebilir misiniz? –

cevap

7

Yuras'ın doğru bir şekilde işaret ettiği gibi, cabal dosyasında modülün exposed-modules altına eklenmesi sorunu çözmektedir.