Zajmuję się tworzeniem małego programu do programowania, który wykorzystuje zewnętrzną bibliotekę statyczną, którą opracowałem w C++. Uzyskuje dostęp do biblioteki lib poprzez FFI ghc (interfejs funkcji obcych). Wewnątrz tej biblioteki chciałbym wykonać pewne wyjście do konsoli. Jednak dla mnie wygląda tak, jakby strona C++ nie miała poprawnego uchwytu na stdout, ponieważ dane wyjściowe nie pojawiają się na konsoli. Tak więc, moje pytania są następujące:Używanie strumieni stdout/stderr/stdin za FKF firmy haskell
- Czy ghc porwać te trzy strumienie (stdout, stdin, stderr) lub jest libstdC++ po prostu nie je inicjalizacji bo jestem łączenie z GHC?
- Czy mój import FFI musi być "bezpieczny", jeśli pisze się na standardowe wyjście?
- Jak mogę przekazać standardowe wyjście do funkcji C? Czy powinienem po prostu przekazać to bezpośrednio, czy też potrzebuję typu C?
Uwagi dodatkowe: jestem łącząc libstdC++ bezpośrednio do pliku wykonywalnego (tj ghc -lstdC++ ...), który naiwnie zakłada byłby poprawny sposób to robi. Wydaje się działać dobrze
Zastrzeżenie: jeszcze dość nowy do Haskell, więc kroki dziecka do teraz; P
Okazało się problemem było między krzesłem a klawiaturą. Zrobiłem głupi niepowiązany błąd z powodu mojego braku doświadczenia z Haskellem. Twoja odpowiedź była bardzo pomocna, ponieważ pomogła mi ustalić, że stdlibC++ faktycznie inicjuje się poprawnie, a ja po prostu bym był trochę kretynem. Z tego powodu otrzymujesz moją akceptowaną odpowiedź. Dzięki! –