win64 DLL stdout printing after main process completes
cc
cc at nevernet.com
Sun Apr 25 15:01:25 UTC 2021
On Monday, 19 April 2021 at 18:32:15 UTC, Adam D. Ruppe wrote:
> On Monday, 19 April 2021 at 18:05:46 UTC, cc wrote:
>> This seems to work if I flush after every printf or write in
>> both main and the dll. I was under the impression they were
>> supposed to share the same IO buffers though, is this not the
>> case?
>
> Very little in D dlls right now are shared, so there's
> duplicate buffers and functions in the dll do not necessarily
> affect the exe's copies. It basically works in most cases but
> this can cause some quirks and bugs in some situations.
That makes sense, thanks.
Adding a note in case anyone stumbles across this with a similar
problem:
Adding `stdout.setvbuf(0, _IONBF);` to both the main and DLL will
cause D to autoflush after every write call without requiring a
manual flush (which seems to happen quite often when running
under anything other than a basic Windows command prompt).
More information about the Digitalmars-d-learn
mailing list