【问题标题】:Haskell : GLUt32 error message when running my programHaskell:运行我的程序时出现 GLUt32 错误消息
【发布时间】:2012-03-12 22:28:14
【问题描述】:

我是 haskell 的新手,我正在尝试为我的班级做练习,我写了以下内容并尝试评估主要内容,但它吐出了一个错误。 (在 WinGHCi 中)

Loading package GLUT-2.3.0.0 ... can't load .so/.DLL for: glut32 (addDLL: could not load DLL) 

我尝试将 glut32.dll 添加到我的 system32 文件夹并再次运行它,但仍然会弹出相同的错误。谁能告诉我这是怎么回事?

这是我的代码:

导入 Graphics.Gloss

main = display (InWindow "Exercise One" (200, 200) (10, 10)) 黑色图片

图片 = 红色(矩形线 198 198)

当我使用 ghc -o test test.hs./test 通过 powershell 编译时,它会吐出一个错误:one.exe: user error (unknown GLUT entry glutInit)

任何帮助将不胜感激!

【问题讨论】:

  • 您是否正确配置了系统和环境变量?
  • @SerdarDogruyol 根据我的讲师和hackage网站,我几乎安装了haskell平台并通过powershell运行cabal updatecabal install gloss
  • ghci 使用与编译器不同的加载器,我不确定是否可以在所有平台上将 .so/dlls 加载到 ghci 中。你能编译代码并运行可执行文件吗?
  • @DanielFischer 我尝试使用powershell 使用ghc -o test test.hs./test 编译它,它吐出一个错误:one.exe: user error (unknown GLUT entry glutInit)

标签: haskell glut ghci


【解决方案1】:

您将 glut32.dll 文件放在您的 system32 目录中,但如果您使用的是 64 位版本的 Windows,则它需要与其他 32 位二进制文​​件一起放在您的 Windows\SysWOW64 目录中。

由于历史原因,system32 包含本机操作系统二进制文件,在 32 位 Windows 版本上实际上只有 32 位。尽管有这个名字,system32 中的二进制文件在 64 位 Windows 上是 64 位的,而 32 位文件放在 SysWOW64 中。

GHC此时没有Win64端口,所以需要32位的glut32.dll。

您也可以尝试将 glut32.dll 与您正在构建的 exe 放在同一目录中。

Windows 的 glut 版本不止一个;我推荐freeglut 的(32 位)二进制版本之一。

【讨论】:

  • 这样解决了问题...现在我似乎又遇到了一个错误(将文件放入 SysWOW64 后),GLUT: Warning in test.exe: GL error: invalid operation,我更改了代码,请阅读以上内容
  • 我将文件glut32.dll (64bit freeglut) 的副本放到了路径 windows/system32 中,它可以工作了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
相关资源
最近更新 更多