Installing on Windows XP and earlier (Visual Studio build) - LibAgar
This is a step-by-step guide for compiling Agar applications under the Visual Studio IDE from Microsoft.
An alternate build method for building Agar on Windows (using MSYS2) is
described at:
Installing on Windows with MSYS2.
- Visual Studio 2005 or later.
- The base "Platform SDK" (Microsoft Windows SDK).
- The Visual C++ Redistributable package for 2010, 2015 or later (depending on your Visual Studio version).
How to add Include & Library paths
Using external libraries from Visual Studio requires that the
explicit Include and Library paths be specified.
In Visual Studio versions prior to 2010, you can add a directory
to the Include or Library path from Tools / Options
, then
Projects and Solutions / VC++ Directories
. In the
"Show directories for"
field, select the option
"Include files" or "Library files" and add the new directory path
to this list.
Starting from Visual Studio 2010, Library/Includes paths are
handled differently.
The Projects and Solutions / VC++ Directories
dialog is no longer available, and Library/Include paths can be set
on a per-project basis (i.e., right-click on the project node and
select Properties
/ VC++ Directories
).
See this article
for details.
It is still possible to specify global Include/Library paths
by manually editing the Microsoft.Cpp.*.user.props
files (found under AppData\Microsoft\MSBuild\v4.0 relative to
your Local Settings\ or C:\Users\%USERNAME%\).
Open this file in a text editor, and append your directories to
$(IncludePath) and $(LibraryPath) like so:
<PropertyGroup> <IncludePath>$(IncludePath);C:\Program Files\Agar\include\x86</IncludePath> <LibraryPath>$(LibraryPath);C:\Program Files\Agar\lib\x86</LibraryPath> </PropertyGroup>
For the x64 version:
<PropertyGroup> <IncludePath>$(IncludePath);C:\Program Files\Agar\include\x64</IncludePath> <LibraryPath>$(LibraryPath);C:\Program Files\Agar\lib\x64</LibraryPath> </PropertyGroup>
Disable parallel compilation in Visual Studio 2010
Parallel building may trigger in bugs in Visual Studio 2010.
If you are getting random build errors (e.g., some files cannot be opened
even though they exist), make sure to disable parallel builds. To
disable parallel builds, go to Tools / Options / Project and Solutions /
Build and Run
, and set "maximum number of parallel project builds" to "1".
- Download the latest Agar binary package and unpack it to its target location such as C:\Program Files\Agar.
-
Start Visual Studio and bring up
Tools / Options
. SelectProjects and Solutions / VC++ Directories
. In the"Show directories for"
field, select the option "Include files". - Assuming you have unpacked the Agar binary package into C:\Program Files\Agar, add C:\Program Files\Agar\include\x86 (or C:\Program Files\Agar\include\x64 and C:\Program Files\Agar\lib\x86 (or C:\Program Files\Agar\lib\x64) to your VS Include/Library Paths.
SDL 1.2 enables support for Agar's sdlfb & sdlgl drivers.
- Download the SDL-devel-1.*-VC.zip package from the SDL 1.2 Download Area.
- Add C:\Program Files\SDL\include and and C:\Program Files\SDL\lib\x86 (or C:\Program Files\SDL\lib\x64) to your VS Include/Library Paths.
- Copy x86\SDL.dll to C:\Windows\System (or C:\Windows\System32 on x64), and x64\SDL.dll to C:\Windows\SysWOW64.
While Agar itself does not rely on threads for its own operation, it can be compiled such that all of its public functions become free-threaded. This requires the Pthreads-win32 library to be installed.
- Go to the Pthreads-win32 download area, fetch the latest version (pthreads-w32-2-x-x-release.zip) and extract to in some temporary location. Move (and rename) the Pre-built.2 directory over to C:\Program Files\Pthreads.
- Copy the contents of the dll\x86 directory to your C:\Windows\System (or C:\Windows\System32 on x64), and the contents of dll\x64 to your C:\Windows\SysWOW64.
- Add C:\Program Files\Pthreads\include and C:\Program Files\Pthreads\lib\x86 (or C:\Program Files\Pthreads\lib\x64) to your VS Include/Library Paths.
FreeType is the preferred font engine for Agar. FreeType provides Visual Studio project files so its build process is simple.
- Go to the FreeType2 download area, download the latest source package (ft*.zip), and unpack it to some temporary location.
-
In the FreeType sources, go to the builds\win32\vc* directory
for your version of Visual Studio and open freetype.sln.
Locate the
Solution Configurations
combo box in the Visual Studio toolbar, and select"Release Multithreaded"
. -
Now build the solution. This will generate the static .lib file.
Right-click on the freetype project entry in Solution Explorer, go
to
Properties
and locateConfiguration Properties / General
. In theProject Defaults
section, set the "Configuration Type" field to "Dynamic Library" (.dll), and build the solution again to generate the .dll version. - Exit Visual Studio, and go to the build directory (e.g., \objs\win32\vc2010). Locate the .lib and .dll files and install them into your C:\Program Files\FreeType\lib\x86 (or C:\Program Files\FreeType\lib\x64), renaming them to freetype.lib and freetype.dll.
- (Optional) Copy freetype.dll to your C:\Windows\System (or C:\Windows\System32 on x64) to make it available system-wide.
- Copy the entire include directory from the FreeType sources to C:\Program Files\Freetype\include.
- Add C:\Program Files\FreeType\include and C:\Program Files\FreeType\include\freetype2 to your Include Paths.
- Add C:\Program Files\FreeType\lib\x86 (or C:\Program Files\FreeType\lib\x64) to your Library Paths.
You can now create your application. In the "Application Wizard", set "Application type" to "Console application", check the Empty project box and click Finish.
In the Solution Explorer, go to Properties
from the popup menu of
your project. Click on Configuration Properties / Linker / System
and set the "SubSystem" parameter to "Windows (/SUBSYSTEM:WINDOWS)".
Click on Configuration Properties / Linker / Input
, and add the
following to the Additional Dependencies
field:
- ag_gui.lib
- ag_core.lib
- winmm.lib
- opengl32.lib (if OpenGL is enabled)
- SDL.lib (if SDL is enabled)
- SDLmain.lib (if SDL is enabled)
- freetype.lib (if FreeType is enabled)
- pthreadVC2.lib (if multithreading is enabled)
Add a new C++ file to Source Files in the Solution Explorer, such as main.cpp. Try the standard "Hello world":
#include <agar/core.h> #include <agar/gui.h> int main(int argc, char *argv) { AG_Window *win; if (AG_InitCore(NULL, 0) == -1 || AG_InitGraphics(0) == -1) { return (1); } win = AG_WindowNew(0); AG_LabelNew(win, 0, "Hello, world!"); AG_WindowShow(win); AG_EventLoop(); return (0); }
If you are not using the precompiled SDK and would like to compile Agar yourself, look for the project files included in the .\ProjectFiles\ directory in the Agar .zip source distribution. Locate the .zip file matching your Visual C++ release, for example vs2005-windows.zip will work with Visual C++ 2005 editions and later.
Unpack the archive into the very top Agar source directory.
Open Agar.sln with Visual Studio and compile. Once Agar is compiled, run INSTALL-SDK.EXE in the root of the Agar source directory to install the libraries on your system. By default, they are installed into C:\Program Files\Agar.
Generating custom compilation profiles (advanced)
The set of project files included in Agar's .\ProjectFiles\
are automatically generated. These flavors were chosen for various
popular combinations of IDE versions and platforms. The build may
be configured using options (i.e., --disable-threads
will disable
multithreading support). If you wish to use a compilation profile
not already available in .\ProjectFiles\, follow this procedure:
- If you do not have Cygwin installed, install it (Download Cygwin). Make sure "Interpreters / perl" is enabled.
- Download the precompiled Premake 3.7 binary (premake-win32-3.7.zip) and copy it to Cygwin's /usr/local/bin directory.
-
Download the latest stable release of
BSDBuild
and install it with
./configure && make all install
. -
Find Makefile.proj in Agar's top-level source directory,
open it up in a text editor.
Add your entries to
PROJFILES
(see the commented-out example profiles at the bottom of Makefile.proj). -
While still in Agar's top-level source directory, execute
touch Makefile.config
, thenmake proj
from the Cygwin shell. If successful, the new project files will appear under .\ProjectFiles\. - Unpack the project files in the root of your Agar source directory.
1) If you've compiled with SDL support and are getting a linker error similar to:
SDLmain.lib(SDL_win32_main.obj): error LNK2019: unresolved external symbol _SDL_main referenced in function _main
Then make sure SDL.h is included in your file with
main()
and that main()
is declared exactly as follows:
int main(int argc, char *argv)
2) If you are getting linker errors such as:
error LNK2019: unresolved external symbol: "__imp__timeGetTime@0" in Funktion "_Init".
Then your "Linker / Input" settings are probably missing a library
(in this example, winmm.lib is missing).
The linker input settings are accessible from Solution Explorer, then
"Properties" from the popup menu of your project. Click on
Configuration Properties / Linker / Input
,
and add the missing libraries to the Additional Dependencies
field.
See the
Creating an Agar application in Visual Studio
section above for details.
3) If your program is not starting due to missing MSVCR100.DLL, make sure that the Visual C++ 2010 Redistributable Package is installed on your system. Any application compiled with Visual Studio depends on this library (if you don't like this, consider using MinGW instead of Visual Studio). Developers usually bundle a copy of the file with their application, or link statically against it (you can link statically by selecting the "Multi-threaded (/MT)" option under "C/C++ -> Code Generation").
4) If your program fails to start and Visual Studio is not reporting any useful information, make sure that all dependencies are compiled for the same architecture. As a last resort, try recompiling all libraries (pthreads, freetype, etc.) yourself.
5) If you are using Agar's wgl
driver (the default on Windows)
and your application freezes a few seconds after focus is switched to a
different application, this is an Aero bug affecting OpenGL applications.
To disable Aero, right-click on the Windows Desktop, click on Personalize,
and select a basic theme such as "Windows Classic".
Alternatively, you can work around this problem using a compatibility
tweak: right-click on your application .exe file, go to Properties /
Compatibility, and check the "Disable visual themes" option.