[Lazarus] Reading std::ostream from dll

Marco van de Voort marcov at stack.nl
Thu Nov 25 12:43:08 CET 2010

On Tue, Nov 23, 2010 at 05:18:38PM -0300, Leonardo M. Ram? wrote:
> Hi, I'm working with a dll/so created with C++, that has a function which
> fills an std::ostream, and I need to read it from a FreePascal app using
> a buffer or TStream.
> The C++ method is similar to this:
> void myClass::getOutputData(ostream &out);
> I wrapped it to be readable from FPC as this:
> ...
> extern "C"{
>   void getMyOutputData(void * myInstance, void * &stream){
>     myClass * lInstance = (myClass *)myInstance;
>     lInstance->getOutputData(stream);
>   }
> }
> ...
> Is there a way to read std::ostream from FPC?

No. This kind of stuff doesn't even work between two different C++ compilers.

You probably need to expose this on C level as a proceure that writes "n"
bytes to a handle. Then the implementation (in C++) should write that block
of mem to the stream.

More information about the Lazarus mailing list