From: Paul R. <pau...@gm...> - 2004-06-19 01:45:27
|
On Fri, 18 Jun 2004 20:25:42 -0400, Greg Chicares <chi...@mi...> wrote: > > Paul Richards wrote: > > > > I have been working on a project which compiles and runs perfectly on > > both Linux and Mac. It uses SDL and SDL_Mixer and I have been trying > > to get it working under MinGW. > > > > I managed to install SDL from binaries, followed my libsmpeg and > > SDL_Mixer both from source. I then tried compiling my app and apart > > from the odd library name issue and winsock2.h it all compiled fine. > > Maybe something you downloaded is incompatible with your tools. > It might have been built with a different compiler, for example, > or with a different version of the same compiler. C++ is > particularly susceptible to such problems. Perhaps the file > access permissions are wrong. The SDL library was obtained as a binary specific for MinGW. SDL_Mixer and libsmpeg were both compiled from source. I do not see how my binaries could be incompatible.. > > > It doesn't run however, it just crashes immediately with a "This > > application failed to initialse (error 0x00000005)" (or words to that > > effect, I can't remember the exact error). > > Run it again, capture the exact error message, and google for it. > The exact error code is meaningful. The exact error: "The application failed to initialize properly (0xc0000005). Click on OK to terminate the application." This error appears on google as being caused by many different problems from corrupt registries to just needing a reboot. There is no real explination I can find as to what is actually going wrong. > > > I tried putting in a print statement on the very first line of main() > > and found it was never reached. Additionally gdb tells me nothing, it > > tells me that the app crashed in function '??'. > > Perhaps whatever you downloaded wasn't built with debugging > information. If replacing main()'s implementation with an > empty {} doesn't change the diagnostic, then the problem is > probably initialization of a global C++ object or a library > incompatibility issue. Otherwise, adding back one statement at > a time in main() will help localize the problem. > All of the libraries have full debug symbols as far as I know. The SDL library binaries are the development ones with debug symbols, and both SDL_Mixer/libsmpeg compile with debug symbols by default. I have a feeling that the call stack may be getting corrupted because when I try to navigate up the calling functions gdb itself gives an error about not being able to access memory at certain addresses. Though I really have no idea. I have no global variables which require initialising, and my cerr statement is the very first line of main(). I do however know that SDL uses a macro to replace your own program's main() with it's own. Could this issue be with SDL itself? -- Paul Richards |