Почему мне нужно удалить `ekg` из build-deps для haskell stack/cabal, чтобы найти мою dll в Windows?
Я строю проект на Haskell 7.10, который зависит от tdsodbc.dll, используя стек v1.7.1 под Windows, все 64-битные. У меня есть tdsodbc.dll в lib
папка проекта, и extra-lib-dirs: lib
а также extra-libraries: tdsodbc
в.Cabal.
Но когда я компилирую, я получаю Missing C library: tdsodbc
когда работает стек cabal configure
, Я пытался положить extra-lib-dirs: [lib]
в stack.yaml
, и я могу видеть из этой команды настройки, что он поставил --extra-lib-dirs=C:\Users\Kevin\src\theproject\lib
на кабале настраивают командную строку, но все равно жалуются на то, что пропали без вести.
Теперь странная часть: если я уберу ekg
от build-deps
проекта (и удалить соответствующий импорт и т. д.), проект строится просто отлично! Я все еще должен скопировать DLL в .stack-work/dist/…
чтобы заставить его работать, но зачем ekg
в build-deps помешать Кабалу настроить его?
Я попробовал трюк от Cannot get cabal, чтобы найти библиотеку mpi для haskell-mpi в Windows, поставив c/Users/Kevin/src/theproject/lib
в LIBRARY_PATH
(нет никаких .a
в моем случае подать на mv, а нет.h), но это мне не помогло. Только удаление ekg
помог мне до сих пор. Что может быть причиной этого? "Решение" кажется совершенно не относящимся к проблеме:(
РЕДАКТИРОВАТЬ: я пытался использовать простую платформу Haskell 7.10.3 (из https://www.haskell.org/platform/prior.html), и это настроено и построено просто отлично. Так что проблема в том, когда cabal configure вызывается из стека.