Ich entwickle ein kleines Haskell-Programm, das eine externe statische Bibliothek verwendet, die ich in C++ entwickelt habe. Es greift auf die lib über das FFI (fresh function interface) von ghc zu. Innerhalb dieser Bibliothek möchte ich etwas an die Konsole ausgeben. Allerdings sieht es für mich wie die C++ Seite der Dinge nicht ein korrektes Handle zu stdout haben, da Ausgabe nicht auf der Konsole angezeigt wird. Also, meine Fragen sind:Verwenden von stdout/stderr/stdin Streams hinter haskells FFI
- Hat ghc kapern diese drei Ströme (stdout, stdin, stderr) oder libstdC++ einfach initialisiert sie nicht, weil ich mit ghc Verknüpfung bin?
- Müssen meine FFI-Importe "sicher" sein, wenn sie auf stdout schreiben?
- Wie kann ich Stdout an eine C-Funktion übergeben? Soll ich es einfach direkt weitergeben oder brauche ich einen C-Typ?
Zusätzliche Hinweise: Ich Verknüpfung libstdC++ direkt an die ausführbaren Datei (das heißt ghc -lstdC++ ...), die ich naiverweise angenommen, wäre der richtige Weg, dies zu tun. Scheint gut
Haftungsausschluss zu arbeiten: Noch ziemlich neu in Haskell, so Gehversuche für jetzt; P
Es stellte sich das Problem zwischen dem Stuhl und der Tastatur war aus. Aufgrund meiner Unerfahrenheit mit Haskell machte ich einen dummen unverwandten Fehler. Ihre Antwort war sehr hilfreich, da sie mir half festzustellen, dass das stdlibC++ tatsächlich korrekt initialisiert wird und ich nur ein bisschen ein Idiot war. Aus diesem Grund bekommst du meine angenommene Antwort. Vielen Dank! –