Using stdin/out in a windows application bugs only when compiled to 64bit.

Mike Franklin slavo5150 at yahoo.com
Fri Jun 8 03:08:21 UTC 2018


On Thursday, 7 June 2018 at 19:19:55 UTC, realhet wrote:
> Hi,
>
> The following narrow test program works fine when compiled with 
> DMD to 32bit target:
>
> import std.stdio, core.sys.windows.windows, core.runtime;
> extern(Windows) int WinMain(HINSTANCE hInstance, HINSTANCE 
> hPrevInstance, LPSTR lpCmdLine, int iCmdShow)
> {
> 	Runtime.initialize;
> 	writeln("Hello");
> 	stdout.flush; //exception
>         readln; //exception
> 	return 0;
> }
>
> It shows the console window and waits for user input at readln.
>
> If I try to compile this to 64bit target or with LDC (both 32 
> and 64) it gets privileged instruction exception at 
> stdout.flush. If I comment out flush then it fails at readln.
>
> Is there a way to fix this? I don't wanna lose the console 
> window even on 64bit.
>
> Thanks!

You might be running into this issue:  
https://issues.dlang.org/show_bug.cgi?id=6880

I recall similar issues with a project I was working on, but I 
don't remember all the details now.  Anyway, I ended up with this 
in the end.

https://github.com/JinShil/Dsus2/blob/b08c66c6a6efb46134c409aac9f1c600d62f99fa/Dsus2/main.d#L300-L331

Mike


More information about the Digitalmars-d-learn mailing list