Ich versuche, eine Datenstruktur zu erstellen, die in Haskell verfügbar gemacht wird, aber in C++ implementiert. Bisher habe ich es in eine .cpp
Datei implementiert, deklarierte alle Funktionen, die ich brauche als extern "C"
und fügte die Quelldatei zum c-sources
Feld in der .cabal
Datei hinzu. Wenn ich das Projekt (in diesem Fall mit stack build
) baue, scheint es gut zu bauen.Einschließlich C++ - Quellen in einem Haskell-Projekt
Ich weiß, es tut etwas in die C++ - Datei, weil es nicht kompiliert, wenn es Fehler gibt.
Ich habe noch zu versuchen, das Projekt auszuführen, weil es eine Bibliothek ist und bis jetzt hat es nichts "runnable" geschrieben, aber das Repl scheint nicht zu funktionieren.
Wenn ich versuche, es (stack repl
in diesem Fall) zu starten, erhalte ich einen fehlenden Symbolfehler mit einem verstümmelten Namen, der sich möglicherweise auf einen Namen in meiner Datei bezieht.
unknown symbol `_ZdlPv'
linking extra libraries/objects failed
Wie kann ich dieses Problem beheben? Ich hatte zuvor ein ähnliches Problem, das ich behoben habe, indem ich die Quelle manuell in eine dynamische Bibliothek kompiliert und dann diese Bibliothek in meinem Projekt verwendet habe. Ich möchte das nicht tun, da es mich mit einer Plattform verbindet und da es keinen Sinn macht, dass ein einfaches C++ nicht mit den Tools, die GHC bereits besitzt, mit dem Projekt kompiliert werden kann. Ich möchte das auf Hacker setzen können.
Gibt es etwas, das mir fehlt? Wenn nicht, ist es ein Fehler und gibt es Pläne, es zu beheben?
Bitte fügen Sie die genaue Fehlermeldung und ein [MCVE]. – Zeta
hier ist ein Beispiel für ein Cabal-Paket, das C++ - Quellen enthält https://github.com/jbransen/minisat-bundle/blob/master/minisat.cabal – d8d0d65b3f7cf42
@Zeta Dies ist nicht diese Art von Frage. –