GHCi无法在Windows上加载.dll lib(C ++ lib)

时间:2018-01-26 11:18:22

标签: c++ haskell ghc cabal

我已经通过vcpgk成功安装了一个C ++ lib,命名为:lmdb:x64-windows

我还通过Cabal install

为Haskell安装了lmdb绑定包

尝试测试lmdb包时:

module Persistence where

import Database.LMDB.Raw

GHCi编译并加载它:

[1 of 1] Compiling Persistence      ( Persistence.hs, interpreted )
Ok, modules loaded: Persistence.

但是当我尝试调用lmdb Raw lib中的任何函数时抛出错误:

*Persistence> lmdb_version
ghc.exe: addDLL: lmdb.dll (Win32 error 126): The specified module could not 
be found.
ghc.exe: Could not load `lmdb.dll'. Reason: addDLL: could not load DLL
ghc.exe: C:\Users\thanhdo\AppData\Roaming\cabal\x86_64-windows-ghc-
8.0.2\lmdb-0.2.5-1uQhV16mebP51rtMgitOcY\HSlmdb-0.2.5-
1uQhV16mebP51rtMgitOcY.o: unknown symbol `mdb_dbi_close'
ghc.exe: unable to load package `lmdb-0.2.5'

我正在四处寻找并尝试了几种方法,但仍然无法解决此错误。我使用的是Windows 7 64位,Haskell平台8.0.2。提前谢谢。

1 个答案:

答案 0 :(得分:1)

根据评论部分的讨论,我试图告诉GHCi lmdb的dll的位置。我修改%path%env后它可以工作。 在我的例子中,路径是:vcpkg \ installed \ x64-windows \ bin