Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 无法加载HDBC postgresql_Haskell_Cabal_Yesod_Haskell Platform_Hdbc - Fatal编程技术网

Haskell 无法加载HDBC postgresql

Haskell 无法加载HDBC postgresql,haskell,cabal,yesod,haskell-platform,hdbc,Haskell,Cabal,Yesod,Haskell Platform,Hdbc,我使用的是windows XP。我已按照本页上的步骤安装YesSOD: 我创建了一个带有Postgresql持久性的框架应用程序。当我第一次运行“yesod-devel”时,它给了我一个关于某个postgresql包丢失的错误(我不记得名称),所以我使用cabal安装了它。现在,当我运行“yesod-devel”时,会出现以下错误: 正在加载程序包HDBC-postgresql-2.2.3.3。。。ghc.exe:pq:指定的模块co 找不到uld。 :无法为:pq加载.so/.DLL(add

我使用的是windows XP。我已按照本页上的步骤安装YesSOD:

我创建了一个带有Postgresql持久性的框架应用程序。当我第一次运行“yesod-devel”时,它给了我一个关于某个postgresql包丢失的错误(我不记得名称),所以我使用cabal安装了它。现在,当我运行“yesod-devel”时,会出现以下错误:

正在加载程序包HDBC-postgresql-2.2.3.3。。。ghc.exe:pq:指定的模块co
找不到uld。
:无法为:pq加载.so/.DLL(addDLL:无法加载DLL)
YesSOD:Network.Socket.accept:失败(无错误)
我已经安装了HDBC-postgresql-2.2.3.3,并且在postgresql的bin文件夹中设置了--extra lib dirs,其中包含所有DLL,但没有任何帮助

据我所知,它正试图加载pq.dll,但我的系统上没有它,我有libpq.dll,因此我试图重命名该dll,但没有任何效果。我迷路了

请帮忙


在Windows上,需要正确设置%path%。我在“程序文件”下安装了postgresql,出于某种原因,HDBC postgresql不喜欢路径包含空格的事实,因此我最终将8.3路径版本添加到%path%中,似乎解决了问题。

您需要正确设置windows路径。Ghc要求在命令行上将postgreSQL ODBC的以下路径设置为“C:\Program Files\postgreSQL\PSQLDBC\0903\bin”(使用ODBC版本并适当更改)。此外,还应设置postgreSQL bin路径。设置odbc路径后安装odbc驱动程序。如果ODBC DLL链接正确,错误将消失。如果odbc链接未正确完成,则设置cabal flag--extra lib DIR将不起作用。所需文件libpq.dll位于odbc bin目录中

您是否尝试过不重命名它?如果我没有弄错的话,库
foo
应该对应于Windows上的
libfoo.dll
。您是否能够运行只使用HDBC postgresql的代码,而不使用YesSOD或Persistent?这将有助于将问题本地化。@Michael:我该怎么做?我试过“ghci-package-HDBC-postgresql”,它给了我同样的错误。@hammar:是的,我试过不重命名运行。这就是我发现问题的原因:)@akonsu:如果同样的问题发生在普通的旧HDBC postgresql上,那肯定是库的问题。也许您需要修改路径以将文件夹包含在libpq.dll中?或者只需将libpq.dll复制到当前文件夹中,看看是否解决了这个问题? Loading package HDBC-postgresql-2.2.3.3 ... ghc.exe: pq: The specified module co uld not be found. : can't load .so/.DLL for: pq (addDLL: could not load DLL) yesod: Network.Socket.accept: failed (No error)