tags:

views:

178

answers:

1

I'm developing a small haskell program that uses an external static library I've developed in C++. It accesses the lib through ghc's FFI (foreign function interface). Inside this library I would like to do some output to the console. However, it looks to me like the c++ side of things does not have a correct handle to stdout because output does not appear on the console. So then, my questions are:

  • Does ghc hijack these three streams (stdout, stdin, stderr) or is libstdc++ simply not initializing them because I'm linking with ghc?
  • Do my FFI imports need to be "safe" if they write to stdout?
  • How can I pass stdout to a C function? Should I simply pass it directly or do I need a C type?

Additional notes: I'm linking libstdc++ directly to the executable (i.e. ghc -lstdc++ ...) which I naively assumed would be the correct way of doing this. Seems to work well

Disclaimer: Still pretty new to Haskell, so baby steps for now ;P

+3  A: 
ephemient
It turned out the problem was between the chair and the keyboard. I made a silly unrelated mistake due to my inexperience with Haskell. Your answer was quite helpful as it helped me establish that the stdlibc++ does actually initialize correctly and I was merely being a bit of a moron. For this reason you get my accepted answer. Thanks!
Rehno Lindeque