Sto provando a creare una struttura dati che verrà esposta in Haskell, ma implementata in C++. Finora l'ho implementato in un file .cpp
, dichiarato tutte le funzioni necessarie come extern "C"
e aggiunto il file di origine al campo c-sources
nel file .cabal
. Quando costruisco il progetto (in questo caso con stack build
) sembra costruire bene.Includere sorgenti C++ in un progetto Haskell
So che sta facendo qualcosa al file C++ perché non si compila se ci sono errori.
Devo ancora provare a eseguire il progetto perché è una libreria e finora non ha scritto nulla di "eseguibile", ma il repl non sembra funzionare.
Quando provo a eseguirlo (stack repl
in questo caso) Ottengo un errore di simbolo mancante con un nome storpiato che può o non può riferirsi a un nome nel mio file.
unknown symbol `_ZdlPv'
linking extra libraries/objects failed
Come posso risolvere questo problema? Ho avuto un problema simile prima di aver risolto manualmente compilando il codice sorgente in una libreria dinamica e quindi utilizzando quella libreria nel mio progetto. Non voglio farlo poiché mi lega a una piattaforma e poiché non ha senso che un semplice C++ non possa essere compilato con il progetto usando gli strumenti che GHC ha già. Voglio essere in grado di mettere questo in hackage.
C'è qualcosa che mi manca? Se no, è un bug e ci sono piani per risolverlo?
Si prega di aggiungere il messaggio di errore esatto e un [mcve]. – Zeta
Ecco un esempio per un pacchetto cabal contenente sorgenti C++ https://github.com/jbransen/minisat-bundle/blob/master/minisat.cabal – d8d0d65b3f7cf42
@Zeta Questo non è quel tipo di domanda. –