Windows 10 上的 ghci 错误:无法加载用户指定的 .o/.so/.DLL (addDLL: pthread
Posted
技术标签:
【中文标题】Windows 10 上的 ghci 错误:无法加载用户指定的 .o/.so/.DLL (addDLL: pthread【英文标题】:ghci on Windows 10 error: user specified .o/.so/.DLL could not be loaded (addDLL: pthread 【发布时间】:2018-09-13 05:10:49 【问题描述】:我已经在 Windows 10 上安装了 Haskell 平台版本 8.2.2(完整版,64 位)。ghc 可以工作,WinGHCi 也可以。有几个问题: -- 在 cygwin 中运行 ghci 报错:
GHCi,版本 8.2.2:http://www.haskell.org/ghc/:?求助 :无法加载用户指定的 .o/.so/.DLL(addDLL:pthread 或依赖项未加载。(Win32 错误 193))尝试加载时:(动态)pthread 搜索的其他目录:(无)
-- 在 PowerShell 中运行 ghci 只会导致 PowerShell 冻结 -- 使用 cabal 安装软件包会产生类似的错误消息 -- ghc-pkg check 产生大量警告,包括许多引用 ghc-8.0.1 的警告,这是在我的计算机上运行的最新版本的 ghc GHC_PACKAGE_PATH 未设置。我在我的配置中找不到任何引用 ghc-8.0.1 的内容。 (cabal.config 文件包含 Haskell 平台下载页面中给出的定义。)
报错“: user specified .o/.so/.DLL could not be loaded (addDLL: pthread or dependencies not loaded. (Win32 error 193))是什么原因和解决方法?
【问题讨论】:
我不知道。就个人而言,我使用CMDER终端,非常棒。 【参考方案1】:我不能在 cmets 中发帖,所以我将提供我在这里找到的内容。如果这不符合任何 *** 指南,请随意删除我的“答案”。
我在 Windows 10 上全新安装完整的 64 位 Haskell 平台时遇到了同样的错误。
我尝试弄乱另一个项目(确切地说是 Lilypond)提交的 pthread.dll。当 ghci 通过stack ghci
运行时,我将它添加到 Stack 添加的附加目录之一。
Ghci 可以找到它但无法加载它。所以问题不在于 ghci 没有找到任何与 pthread 相关的东西。
以下是输出供参考:
$ stack ghci
The following GHC options are incompatible with GHCi and have not been passed to it: -threaded
GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help
<command line>: user specified .o/.so/.DLL could not be loaded (addDLL: C:\Users\Alice\AppData\Local\Programs\stack\x86_64-windows\msys2-201505)
Whilst trying to load: (dynamic) C:\Users\user\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\bin\pthread.dll
Additional directories searched: C:\Users\user\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\bin
C:\Users\user\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\lib
我还没有任何进一步的信息。不过我希望我提供的内容能有所帮助。
【讨论】:
啊,我最近也安装了 Lilypond,现在出现这些错误。让我们看看我们能做些什么。【参考方案2】:此页面亮起:http://euterpea.com/troubleshooting/
"尝试启动GHCi、WinGHCI或运行GHC失败,出现与pthread.dll相关的错误,例如:用户指定的.o/.so/.DLL could not be loaded (addDLL: pthread or dependencies not loaded. ( Win32错误193))
如果您安装了 Lilypond,不幸的是,这与目前最新版本的 Haskell 平台不兼容。目前只有三种方法可以解决:
选项 1:从 PATH 环境变量中删除 Lilypond 的 bin 文件夹。如果您有用户路径和系统路径,则必须从两者中删除与 Lilypond 相关的条目,而不仅仅是用户的路径。您可能需要重新启动 GHCi 才能再次工作。您仍然可以通过直接创建 Lilypad.exe 的桌面快捷方式来运行 Lilypond 的 GUI。如果从命令行使用,则使用包含文件夹的完整路径调用可执行文件。除非您使用自定义安装位置,否则 Lilypond 附带的 Lilypad、lilypond、midi2ly 和其他程序将位于此文件夹中:C:\Program Files (x86)\LilyPond\usr\bin
选项 2:使用 Haskell Platform 8.0.2a(核心版或完整版)。
选项 3:卸载 Lilypond。仅当它是旧安装并且您不打算再使用它时才建议这样做。否则,请先尝试选项 1。”
HTH
【讨论】:
我遇到了和海报一样的问题,但我没有安装 LilyPond。【参考方案3】:尝试使用系统管理员权限运行 GHCI(在“开始”中键入“Command Pro...”并单击“以管理员身份运行”)。
如果ghci
现在可以工作,那么问题就解决了,因为您现在可以访问文件c:\Windows\System32\pthread.dll
。
要在没有管理员权限的情况下使用ghci
(推荐),请更改权限(当您拥有管理员权限时)以便用户可以读取pthread.dll
文件:
C:\> CACLS c:\Windows\System32\pthread.dll /e /p your-username:r
(将your-username
替换为您的实际用户名)
此修复的功劳归于这篇文章:https://faculty-web.msoe.edu/hasker/cs3040/ghc-install.html
【讨论】:
以上是关于Windows 10 上的 ghci 错误:无法加载用户指定的 .o/.so/.DLL (addDLL: pthread的主要内容,如果未能解决你的问题,请参考以下文章
func = elem [1..10]在GHCi中有效,但无法编译
无法通过 Windows 10 上的 Appium 启动计算器显示错误
主机 myhost 的 epmd 错误:Windows 10 上的地址(无法连接到主机/端口)