<HTML>
	<HEAD>
		<TITLE>Using SDL with Microsoft Visual C++</TITLE>
	</HEAD>
	<BODY>
		<H1>
			Using SDL with Microsoft Visual C++
		</H1>
		<H3>
			by <A HREF="mailto:snowlion@sprynet.com">Lion Kimbro </A>and additions by <A HREF="mailto:james@conceptofzero.net">
				James Turk</A>
		</H3>
		<p>
			You can either use the precompiled libraries from <A HREF="http://www.libsdl.org/download.php"> the SDL Download web site </A>, or you can build SDL yourself.
		</p>
		<H3>
			Building SDL
		</H3>
		<P>
			Go into the VisualC directory and double-click on the Visual Studio solution for your version of Visual Studio, e.g. <CODE>SDL_VS2008.sln</CODE> This should open up the IDE.
		</P>
		<P>
			There are different solution files for the various
			versions of the IDE. Please use the appropiate version
			2008, 2010 or 2012; the 2010EE and 2012EE files
			should be used with the "Express Edition" releases.
		</P>
		<P>
			Build the <CODE>.dll</CODE> and <CODE>.lib</CODE> files.
		</P>
		<P>
			This is done by right clicking on each project in turn (Projects are listed in 
			the Workspace panel in the FileView tab), and selecting "Build".
		</P>
		<P>
			You may get a few warnings, but you should not get any errors. You do have to 
			have at least the DirectX 9 SDK installed, however. The latest 
			version of DirectX can be downloaded from <A HREF="http://www.microsoft.com">Microsoft</A>.
		</P>
		<P>
			Later, we will refer to the following .lib and .dll files that have just been 
			generated:
		</P>
		<ul>
    <li> SDL2.dll</li>
    <li> SDL2.lib</li>
    <li> SDL2main.lib</li>
    </ul>
		<P>
			Search for these using the Windows Find (Windows-F) utility inside the VisualC directory.
		</P>
		<H3>
			Creating a Project with SDL
		</H3>
		<P>
			Create a project as a Win32 Application.
		</P>
		<P>
			Create a C++ file for your project.
		</P>
		<P>
			Set the C runtime to "Multi-threaded DLL" in the menu: <CODE>Project|Settings|C/C++ 
				tab|Code Generation|Runtime Library </CODE>.
		</P>
		<P>
			Add the SDL <CODE>include</CODE> directory to your list of includes in the 
			menu: <CODE>Project|Settings|C/C++ tab|Preprocessor|Additional include directories </CODE>
			.
			<br>
			<STRONG><FONT color="#009900">VC7 Specific: Instead of doing this I find it easier to 
					add the include and library directories to the list that VC7 keeps. Do this by 
					selecting Tools|Options|Projects|VC++ Directories and under the "Show 
					Directories For:" dropbox select "Include Files", and click the "New Directory 
					Icon" and add the [SDLROOT]\include directory (e.g. If you installed to 
					c:\SDL\ add c:\SDL\include).&nbsp;Proceed to&nbsp;change the 
					dropbox selection to "Library Files" and add [SDLROOT]\lib.</FONT></STRONG>
		</P>
			<P>
				The "include directory" I am referring to is the <CODE>include</CODE> folder 
				within the main SDL directory (the one that this HTML file located within).
			</P>
			<P>
				Now we're going to use the files that we had created earlier in the Build SDL 
				step.
			</P>
			<P>
				Copy the following files into your Project directory:
			</P>
			<ul>
     <li> SDL2.dll</li>
     </ul>
			<P>
				Add the following files to your project (It is not necessary to copy them to 
				your project directory):
			</P>
			<ul>
     <li> SDL2.lib </li>
     <li> SDL2main.lib</li>
     </ul>
			<P>
				(To add them to your project, right click on your project, and select "Add 
				files to project")
			</P>
		<P><STRONG><FONT color="#009900">Instead of adding the files to your project it is more 
					desireable to add them to the linker options: Project|Properties|Linker|Command 
					Line and type the names of the libraries to link with in the "Additional 
					Options:" box.&nbsp; Note: This must be done&nbsp;for&nbsp;each&nbsp;build 
					configuration (e.g. Release,Debug).</FONT></STRONG></P>
		<H3>
			SDL 101, First Day of Class
		</H3>
		<P>
			Now create the basic body of your project. The body of your program should take 
			the following form: <CODE>
				<PRE>
#include "SDL.h"

int main( int argc, char* argv[] )
{
  // Body of the program goes here.
  return 0;
}
</PRE>
			</CODE>
		<P></P>
		<H3>
			That's it!
		</H3>
		<P>
			I hope that this document has helped you get through the most difficult part of 
			using the SDL: installing it. Suggestions for improvements to this document 
			should be sent to the writers of this document.
		</P>
		<P>
			Thanks to Paulus Esterhazy (pesterhazy@gmx.net), for the work on VC++ port.
		</P>
		<P>
			This document was originally called "VisualC.txt", and was written by <A HREF="mailto:slouken@libsdl.org">
				Sam Lantinga</A>.
		</P>
		<P>
			Later, it was converted to HTML and expanded into the document that you see 
			today by <A HREF="mailto:snowlion@sprynet.com">Lion Kimbro</A>.
		</P>
		<P>Minor Fixes and Visual C++ 7 Information (In Green) was added by <A HREF="mailto:james@conceptofzero.net">James Turk</A>
		</P>
	</BODY>
</HTML>
