<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 appropriate version
			2008, 2010, 2012 or 2013.
		</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 
					desirable 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:
			<PRE><CODE>
#include "SDL.h"

int main( int argc, char* argv[] )
{
  // Body of the program goes here.
  return 0;
}
			</CODE></PRE>
		<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>
