From: Luke D. <cod...@ho...> - 2005-04-06 12:09:46
|
----- Original Message ----- From: "Daniel Miller" <da...@im...> To: <min...@li...> Sent: Wednesday, April 06, 2005 4:24 AM Subject: [Mingw-users] Re: CreateThread quirk under mingw 3.4.2 > "Luke Dunstan" <cod...@ho...> wrote in > news:BAY...@ph...l: > >> >> "-mthreads" is the equivalent switch, but I doubt it will make a >> difference because it really only affects C++ exception handling. >> Could you provide a small but complete example that demonstrates the >> problem? >> >> I think you also need to use _beginthread() instead of CreateThread(). >> >> Luke >> > > Okay, at the risk of posting too large of a message, I'm enclosing a > stripped-down version of my program. It deletes all the graphics-drawing > code, but includes everything else. Your message is not too large. I was hoping that you could provide an example that compiles and runs, and visibly demonstrates the problem, but your example doesn't actually compile without changes so I assume you haven't tried running it either. By adding a small piece of drawing code to the thread, I can see that the thread runs normally and draws in the window (with no fprintf). This suggests that there is a bug in your program, and the fact that it works in MSVC may be accidental. Perhaps try posting again? Luke > > I also switch to _beginthread() after reading the notes in msdn, but that > has had no effect on program operation. Again, if I compile under VC6 > with: > > cl /W3 /O2 /G4 /MT rainbowt.cpp user32.lib gdi32.lib > > this program works fine. If I compile under MinGW 3.4.2 with: > > g++ -Wall -s -O3 -mthreads rainbowt.cpp -o rainbowt.exe -lgdi32 > > the program runs, the main window is drawn, but no output ever appears. > However, if I uncomment the file-printing debug code at the end of this > code, then the g++ application runs just fine!!! Even eliminating the > fprintf statement, however, puts me back to nothing drawing. I have *no* > idea what fprintf has to do with any of this... I had included it just > to find out whether or not my main thread was even being executed... > > Dan |