Haskell (Windows)从库插入代码时,PutStrLn停止工作
我注意到一些非常奇怪的行为: 我正在试着让电脑在windows上工作。但是如果我将库中的代码插入Haskell (Windows)从库插入代码时,PutStrLn停止工作,haskell,ghc,z3,ffi,Haskell,Ghc,Z3,Ffi,我注意到一些非常奇怪的行为: 我正在试着让电脑在windows上工作。但是如果我将库中的代码插入Main模块putStrLn将停止工作。这怎么可能 设置 我使用了用于windows的z3解算器()的预编译x64二进制文件(并将其放入C:\mylibs\z3-4.8.4_x64) 然后我创建了一个堆栈项目haskellZ3Test package.yaml中的相关部分: dependencies: - base >= 4.7 && < 5 - z3 <= 408.
Main
模块putStrLn
将停止工作。这怎么可能
设置
C:\mylibs\z3-4.8.4_x64
)haskellZ3Test
package.yaml
中的相关部分:
dependencies:
- base >= 4.7 && < 5
- z3 <= 408.0
resolver: lts-13.28
packages:
- .
- location:
git: https://github.com/IagoAbal/haskell-z3.git
commit: b10e09b8a809fb5bbbb1ef86aeb62109ece99cae
extra-dep: true
extra-include-dirs:
- "C:\\mylibs\\z3-4.8.4_x64\\include"
extra-lib-dirs:
- "C:\\mylibs\\z3-4.8.4_x64\\bin"
问题
以下是Main
version 1:
module Main where
import Z3.Monad
main :: IO ()
main = putStrLn "hello world"
如果我stack build
然后stack exec haskellZ3Test exe
我会按预期在命令行上获得hello world
但是-这里是Main
version 2:
module Main where
import Z3.Monad
ast :: Z3 AST
ast = do
a <- mkFreshBoolVar "A"
b <- mkFreshBoolVar "B"
mkImplies a b
main :: IO ()
main = putStrLn "hello world"
modulemain其中
导入Z3.Monad
ast::Z3 ast
ast=do
a这看起来像是那个库中的一个bug。也许打开一个问题会有所帮助。你什么也得不到:因为它只是挂起,或者不打印任何内容就退出?如果它终止退出代码是什么?我怀疑这是动态加载或其他方面的问题,甚至在进入\u start
例程之前。如果用调试器加载它,事情可能会变得更清楚。也许z3库已损坏。@它只是退出而不打印任何内容