Windows 10 上的 ghci 错误:无法加载用户指定的 .o/.so/.DLL(addDLL:pthread

问题描述 投票:0回答:4

我已经在 Windows 10 上安装了 Haskell Platform 版本 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 检查会产生大量警告,包括许多涉及 ghc-8.0.1 的警告,这是在我的计算机上运行的最新版本的 ghc 未设置 GHC_PACKAGE_PATH。我在配置中找不到任何引用 ghc-8.0.1 的内容。 (cabal.config 文件包含 Haskell 平台下载页面中给出的定义。)

错误信息“:无法加载用户指定的.o/.so/.DLL(addDLL:pthread或依赖项未加载。(Win32错误193))的原因和解决方法是什么?

haskell package pthreads ghci
4个回答
6
投票

尝试使用系统管理员权限运行 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


5
投票

我在 Windows 10 上全新安装完整的 64 位 Haskell Plateform 时遇到了同样的错误。

我尝试摆弄另一个项目(确切地说是 Lilypond)提交的 pthread.dll。我将其添加到 ghci 运行时 Stack 添加的附加目录之一中

stack ghci

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

2
投票

此页面说明:http://euterpea.com/troubleshooting/

“尝试启动 GHCi、WinGHCI 或运行 GHC 失败,并出现与 pthread.dll 相关的错误,例如:无法加载用户指定的 .o/.so/.DLL(addDLL:未加载 pthread 或依赖项。(Win32 错误193))

如果您安装了 Lilypond,不幸的是,目前已知与最新版本的 Haskell 平台不兼容。目前解决的方法只有三种:

选项 1:从 PATH 环境变量中删除 Lilypond 的 bin 文件夹。如果您有用户路径和系统路径,则必须从两者中删除与 Lilypond 相关的条目,而不仅仅是用户路径。您可能需要重新启动 GHCi 才能再次工作。您应该仍然能够通过直接创建 Lilypad.exe 的桌面快捷方式来运行 Lilypond 的 GUI。如果从命令行使用,请使用包含文件夹的完整路径调用可执行文件。除非您使用自定义安装位置,否则 Lilypad、lilypond、midi2ly 和 Lilypond 附带的其他程序将位于此文件夹中:C:\Program Files (x86)\LilyPond\usr in

选项 2:使用 Haskell Platform 8.0.2a(核心或完整)。

选项 3:卸载 Lilypond。仅当它是旧安装并且您不打算再使用它时才建议这样做。否则,请先尝试选项 1。”


0
投票

我设法修复了此运行问题(具有管理员权限)

icacls C:\Windows\System32\pthread.dll /grant Users:RX

这源自以下文档:https://faculty-web.msoe.edu/hasker/cs3040/ghc-install.html

© www.soinside.com 2019 - 2024. All rights reserved.