Я пытаюсь создать структуру данных, которая будет представлена в Haskell, но реализована в C ++. Пока я реализовал это в .cpp
файл, объявлены все нужные мне функции как extern "C"
и добавил исходный файл в c-sources
поле в .cabal
файл. Когда я строю проект (в данном случае с stack build
Кажется, что это нормально.
Я знаю, что это делает что-то в файл C ++, потому что он не компилируется, если есть ошибки.
Я еще не попробовал запустить проект, потому что это библиотека, и пока на ней не написано ничего «работоспособного», но repl, похоже, не работает.
Когда я пытаюсь запустить его (stack repl
в этом случае) Я получаю ошибку отсутствующего символа с искаженным именем, которое может относиться или не относиться к имени в моем файле.
unknown symbol `_ZdlPv'
linking extra libraries/objects failed
Как я могу исправить эту проблему? У меня была похожая проблема до того, как я ее исправил, вручную скомпилировав исходный код в динамическую библиотеку, а затем использовал эту библиотеку в своем проекте. Я не хочу этого делать, поскольку это связывает меня с платформой, и поскольку нет никакого смысла в том, что простой C ++ не может быть скомпилирован с проектом с использованием инструментов, которые уже есть в GHC. Я хочу иметь возможность поставить это на взлом.
Я что-то упускаю? Если нет, то это ошибка и есть ли планы по ее устранению?
Ладно, мне удалось исправить это сейчас.
Я добавил extra-libraries: stdc++-6, gcc_s_seh-1
в мой файл клики, и теперь это работает. Не знаю, зависит ли это от платформы, но эти библиотеки поставляются с GHC, когда я устанавливаю его через стек.
Других решений пока нет …