How to force console
Simen Kjærås
simen.kjaras at gmail.com
Thu Aug 2 13:02:21 UTC 2018
On Thursday, 2 August 2018 at 12:08:50 UTC, Everlast wrote:
> On Thursday, 2 August 2018 at 03:20:30 UTC, Mike Parker wrote:
>> On Wednesday, 1 August 2018 at 20:57:30 UTC, Everlast wrote:
>>> I can create a console for a dll using AllocConsole and
>>> special Write functions but this is a pain. How do I get all
>>> standard input and output to either use this console or for
>>> the app to create the console automatically?
>>>
>>> The problem I'm having is that I can write(using custom
>>> write) but can't read. I'd rather just have a dll with a
>>> normal console window like a normal program.
>>>
>>> I do have `-L/SUBSYSTEM:CONSOLE`
>>>
>>> but no console appears.
>>
>> As far as I know, that only works with executables. Loading a
>> DLL does not trigger the opening of a console. You'll have to
>> stick with AllocConsole and redirect the I/O.
>>
>> http://www.asawicki.info/news_1326_redirecting_standard_io_to_windows_console.html
>
> Thanks, but does that work in D?
>
> Error: cannot cast expression `*fp` of type `shared(_iobuf)` to
> `File*`
I tried getting it to work, gave up, and found some example code
that I boiled down to this:
import std.stdio : writeln, stdout;
AllocConsole();
freopen("CON", "w", stdout.getFP);
writeln("OHAI!");
That works on my machine, but I haven't read enough to know why
it wouldn't fail on others.
--
Simen
More information about the Digitalmars-d-learn
mailing list