win64 DLL stdout printing after main process completes
cc
cc at nevernet.com
Mon Apr 19 18:05:46 UTC 2021
On Monday, 19 April 2021 at 16:04:28 UTC, Mike Parker wrote:
> On Monday, 19 April 2021 at 14:55:03 UTC, cc wrote:
>
>>
>> And upon running, the output I receive is:
>> ```
>> [Main] Start
>> [Main] x: 5
>> [Main] Finished
>> [Main] END
>> [dll] DLL_PROCESS_ATTACH
>> [dll] static this for mydll
>> [dll] MyDLL_Test
>> [dll] DLL_PROCESS_DETACH
>> [dll] static ~this for mydll
>> ```
>>
>> I would expect the first three lines of dll output to precede
>> the "[Main] x:" line at least. Is there something I'm doing
>> wrong? Do I need to somehow pass a reference to the main
>> stdio to the DLL's D runtime similar to how the GC can be
>> shared?
>
> It's probably just due to buffering. Insert a fflush(stdout)
> after the calls to printf in your DLL and see what happens.
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?
More information about the Digitalmars-d-learn
mailing list