digitalmars.D.learn - static constructor not working with WinMain GUI app
- Andrej Mitrovic (16/16) Nov 23 2010 maintest.def:
- Simen kjaeraas (9/28) Nov 23 2010 Looking at http://digitalmars.com/d/2.0/windows.html, it seems your
- Andrej Mitrovic (4/40) Nov 24 2010 This means the windows sample code that comes with DMD in the samples
- Andrej Mitrovic (3/48) Nov 24 2010 Ok I've filed a bug report and the fix:
- Michal Minich (3/4) Nov 23 2010 Make sure you use newest DMD, I think in 2.048 or 49 there was bug that
maintest.def: EXETYPE NT SUBSYSTEM WINDOWS maintest.d: http://pastebin.com/3c4CKDG1 Compiled with DMD 2.050: dmd maintest.d maintest.def The output in the log file is "Lenght: 0". The static constructor is never called when using WinMain. But if I use a normal "void main()" function instead of WinMain, then the static constructor does get called. Here's a working example that tests a GUI dialogbox and outputs "Length: 4" in the log file: maintest.def: EXETYPE NT SUBSYSTEM WINDOWS maintest.d: http://pastebin.com/3UDKmxJ1 dmd maintest.d maintest.def This looks like a bug to me..
Nov 23 2010
Andrej Mitrovic <none none.none> wrote:maintest.def: EXETYPE NT SUBSYSTEM WINDOWS maintest.d: http://pastebin.com/3c4CKDG1 Compiled with DMD 2.050: dmd maintest.d maintest.def The output in the log file is "Lenght: 0". The static constructor is never called when using WinMain. But if I use a normal "void main()" function instead of WinMain, then the static constructor does get called. Here's a working example that tests a GUI dialogbox and outputs "Length: 4" in the log file: maintest.def: EXETYPE NT SUBSYSTEM WINDOWS maintest.d: http://pastebin.com/3UDKmxJ1 dmd maintest.d maintest.def This looks like a bug to me..Looking at http://digitalmars.com/d/2.0/windows.html, it seems your template for WinMain is outdated. You should use the template on that page, but beware that exceptionHandler should take a Throwable, not an Exception, like the example says. This error is reported: http://d.puremagic.com/issues/show_bug.cgi?id=5261 -- Simen
Nov 23 2010
This means the windows sample code that comes with DMD in the samples folder has to be updated, that's where I took the template from. Thanks. On 11/23/10, Simen kjaeraas <simen.kjaras gmail.com> wrote:Andrej Mitrovic <none none.none> wrote:maintest.def: EXETYPE NT SUBSYSTEM WINDOWS maintest.d: http://pastebin.com/3c4CKDG1 Compiled with DMD 2.050: dmd maintest.d maintest.def The output in the log file is "Lenght: 0". The static constructor is never called when using WinMain. But if I use a normal "void main()" function instead of WinMain, then the static constructor does get called. Here's a working example that tests a GUI dialogbox and outputs "Length: 4" in the log file: maintest.def: EXETYPE NT SUBSYSTEM WINDOWS maintest.d: http://pastebin.com/3UDKmxJ1 dmd maintest.d maintest.def This looks like a bug to me..Looking at http://digitalmars.com/d/2.0/windows.html, it seems your template for WinMain is outdated. You should use the template on that page, but beware that exceptionHandler should take a Throwable, not an Exception, like the example says. This error is reported: http://d.puremagic.com/issues/show_bug.cgi?id=5261 -- Simen
Nov 24 2010
Ok I've filed a bug report and the fix: http://d.puremagic.com/issues/show_bug.cgi?id=5268 On 11/24/10, Andrej Mitrovic <andrej.mitrovich gmail.com> wrote:This means the windows sample code that comes with DMD in the samples folder has to be updated, that's where I took the template from. Thanks. On 11/23/10, Simen kjaeraas <simen.kjaras gmail.com> wrote:Andrej Mitrovic <none none.none> wrote:maintest.def: EXETYPE NT SUBSYSTEM WINDOWS maintest.d: http://pastebin.com/3c4CKDG1 Compiled with DMD 2.050: dmd maintest.d maintest.def The output in the log file is "Lenght: 0". The static constructor is never called when using WinMain. But if I use a normal "void main()" function instead of WinMain, then the static constructor does get called. Here's a working example that tests a GUI dialogbox and outputs "Length: 4" in the log file: maintest.def: EXETYPE NT SUBSYSTEM WINDOWS maintest.d: http://pastebin.com/3UDKmxJ1 dmd maintest.d maintest.def This looks like a bug to me..Looking at http://digitalmars.com/d/2.0/windows.html, it seems your template for WinMain is outdated. You should use the template on that page, but beware that exceptionHandler should take a Throwable, not an Exception, like the example says. This error is reported: http://d.puremagic.com/issues/show_bug.cgi?id=5261 -- Simen
Nov 24 2010
On Tue, 23 Nov 2010 15:23:12 -0500, Andrej Mitrovic wrote:The static constructor is never called when using WinMain.Make sure you use newest DMD, I think in 2.048 or 49 there was bug that module constructors were not called.
Nov 23 2010