Setting up SDL in MinGW

johnki picture johnki · Nov 29, 2011 · Viewed 24.3k times · Source

Currently, I'm trying to figure out how to set up SDL with MinGW. I've seen a couple of sites that have methods (or rather, the same method re-published), but I'd rather not have a "quick 'n dirty" setup.

I see there's an sdl-conf file, I have MSYS installed, and I've downloaded the latest SDL 1.2 MinGW developer release.

Answer

v01d picture v01d · Nov 29, 2011

The tutorial is here. It explains everything needed:

  1. First thing you need to do is download SDL headers and binaries. You will find them on the SDL website, specifically on this page.

Scroll Down to the Development Libraries section and download the Mingw32 development library

Open gz archive and there should be a *.tar archive inside. Open the *.tar and there should be a folder inside of that. Open the folder and it'll contain a bunch of subfolders.

  1. Copy the contents of the lib subfolder to the MinGW lib folder. The MinGW lib folder should be at C:\MinGWStudio\MinGW\lib.

  2. After that, open the include subfolder in the archive and extract the folder named "SDL" to the MinGW include folder, which should be at C:\MinGWStudio\MinGW\include.

Note: Some versions of SDL won't have a folder named "SDL" in the archive's include subfolder, but just a bunch of header files. To get around this simply create a folder named "SDL" in your MinGW include folder and copy all the header files from the archive to that folder you made.

  1. Now take the SDL.dll from the archive (it should be inside the bin subfolder) and extract it. You're going to put this in the same directory as your exe when you compile it.

Alternatively, you can copy SDL.dll to C:\WINDOWS\SYSTEM32 so your SDL app will find SDL.dll even if it's not in the same directory. If you're using a 64bit version of Windows, you'll want to put the dll in C:\Windows\SysWOW64.

The problem with this method is if you have multiple SDL apps that use different versions of SDL, you'll have version conflicts. If you have SDL 1.2.8 in SYSTEM32 when the app uses 1.2.13 you're going to run into problems. Generally you want to have your SDL.dll in the same directory as your executable developing and you'll always want to have SDL.dll in the same directory as the exe when distributing your app.

  1. Now start up MinGW Developer Studio and start a new empty project.

  2. Go to the project settings.

  3. Under the Link tab, paste: mingw32, SDLmain, SDL in the libraries field.

  4. Add source new source file to the project and paste the following code into the new source file:

//

#include "SDL/SDL.h"
int main( int argc, char* args[] ) {
  SDL_Init( SDL_INIT_EVERYTHING ); //Start SDL
  SDL_Quit(); //Quit SDL
  return 0;
}
  1. Now Compile. Save the new source file if necessary and make sure SDL.dll is in the same directory as the executable. If there are no errors, you're finished. Otherwise go back and make sure you didn't skip a step.