2011-08-26 44 views
2

我在Windows XP上。我已经按照此页面上的步骤安装了Yesod:http://www.yesodweb.com/page/five-minutes无法加载HDBC-postgresql

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

 
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) 
我已经安装了HDBC-postgresql-2.2.3.3,并且我已经安装了--extra-lib-dirs设置为postgresql的bin文件夹wih all DLL,但它没有帮助。

据我了解,它是试图加载pq.dll,但我没有在我的系统上,我有libpq.dll,所以我试图重命名该DLL,无济于事。我搞不清楚了。

请帮

康斯坦丁

+0

你试过_without_重命名吗?如果我没有弄错的话,库“foo”应该对应于Windows上的“libfoo.dll”。 – hammar

+0

你能够运行只使用HDBC-postgresql而不使用Yesod或Persistent的代码吗?这将有助于本地化问题。 –

+0

@迈克尔:我该怎么做?我试过“ghci -package HDBC-postgresql”,它给了我同样的错误。 – akonsu

回答

1

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

0

您需要正确设置您的Windows路径。 Ghc需要在命令行(使用ODBC版本并适当地更改它)上为postgreSQL ODBC设置以下路径作为“C:\ Program Files \ PostgreSQL \ psqlODBC \ 0903 \ bin”。另外,应该设置你的postgreSQL bin路径。在设置ODBC路径后安装odbc驱动程序。如果ODBC dll链接正确,错误将消失。如果odbc链接不正确,设置cabal标志--extra-lib-dirs将不起作用。所需文件libpq.dll位于odbc bin目录中。