Почему мне нужно удалить `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 вызывается из стека.

0 ответов

Другие вопросы по тегам