Próbuję utworzyć strukturę danych, która będzie wyświetlana w Haskell, ale zaimplementowana w C++. Do tej pory zaimplementowałem go w pliku .cpp
, zadeklarowałem wszystkie potrzebne funkcje jako extern "C"
i dodałem plik źródłowy do pola c-sources
w pliku .cabal
. Kiedy buduję projekt (w tym przypadku z stack build
) wydaje się, że buduje się dobrze.Łącznie ze źródłami C++ w projekcie Haskell
Wiem, że to robi coś do pliku C++, ponieważ nie kompiluje się, jeśli występują błędy.
Muszę jeszcze spróbować uruchomić projekt, ponieważ jest to biblioteka i do tej pory nie zawiera niczego "działającego", ale replika nie działa.
Kiedy próbuję go uruchomić (stack repl
w tym przypadku) otrzymuję brakujący błąd symbolu z jakąś zniekształconą nazwą, która może ale nie musi odnosić się do nazwy w moim pliku.
unknown symbol `_ZdlPv'
linking extra libraries/objects failed
Jak mogę rozwiązać ten problem? Miałem podobny problem, zanim naprawiłem go ręcznie, kompilując źródło do biblioteki dynamicznej, a następnie korzystałem z tej biblioteki w moim projekcie. Nie chcę tego robić, ponieważ wiąże mnie to z platformą i ponieważ nie ma sensu, aby proste C++ nie mogło zostać skompilowane z projektem przy użyciu narzędzi, które już posiada GHC. Chcę to włączyć w hackage.
Czy jest coś, czego mi brakuje? Jeśli nie, czy jest to błąd i czy planujesz go naprawić?
Proszę podać dokładny komunikat o błędzie i [mcve]. – Zeta
tutaj jest przykładem dla pakietu cabal, który zawiera źródła C++ https://github.com/jbransen/minisat-bundle/blob/master/minisat.cabal – d8d0d65b3f7cf42
@Zeta To nie jest tego typu pytanie. –