Я пытаюсь создать структуру данных, которая будет отображаться в Haskell, но реализована на C++. До сих пор я реализовал его в файле .cpp
, объявил все функции, которые мне нужны, как extern "C"
, и добавил исходный файл в поле c-sources
в файле .cabal
. Когда я строю проект (в этом случае с stack build
), он, кажется, строит отлично.Включая источники C++ в проект Haskell
Я знаю, что он делает что-то в файл C++, потому что он не компилируется, если есть ошибки.
Мне еще нужно попробовать запустить проект, потому что это библиотека, и до сих пор у нее нет ничего «запущенного», но реплика не работает.
Когда я пытаюсь запустить его (stack repl
в этом случае), я получаю недостающую ошибку символа с некоторым искаженным именем, которое может или не может ссылаться на имя в моем файле.
unknown symbol `_ZdlPv'
linking extra libraries/objects failed
Как исправить эту проблему? У меня была аналогичная проблема, прежде чем я исправил ее вручную, компилируя исходный код в динамическую библиотеку, а затем использую эту библиотеку в моем проекте. Я не хочу этого делать, поскольку он связывает меня с платформой, и поскольку нет никакого смысла в том, что простой C++ не может быть скомпилирован с проектом с помощью инструментов, которые GHC уже имеет. Я хочу, чтобы это можно было взломать.
Есть ли что-то, что мне не хватает? Если нет, это ошибка, и есть ли планы по ее исправлению?
Пожалуйста, добавьте точное сообщение об ошибке и [mcve]. – Zeta
вот пример пакета cabal, который содержит источники C++. Https://github.com/jbransen/minisat-bundle/blob/master/minisat.cabal – d8d0d65b3f7cf42
@Zeta Это не тот тип вопроса. –