7/15/03 Version 0.9.1, Library version "3" Please read the README.txt and INSTALL.txt files in the same directory with this file before continuing. More general information is available there. This file documents the particulars of building from source on Windows NT/2000/XP. Visual C++ 6.0 on Windows is currently supported. The OpenSAML.dsw workspace file is located in the root of the distribution with the DLL project and a test EXE project. For Windows, the hard part is just downloading all the libraries you'll need. All the libraries listed in the Unix install docs are needed, except for gcc, of course. The project files assume that these libraries and headers are located in typical places one would find them on a PC, usually in directories below the root, such as \openssl-0.9.7 or \curl-7.10.4. The build files assume that, when possible, include and lib paths are set in the VC++ Directories option tab. The exception is that some of the libraries have the same names when built in debug mode vs. release mode, so those paths are manually set in the projects. NOTE ON DEBUG/RELEASE LIBRARIES As with most newer projects, we use the Microsoft DLL-based C/C++ runtimes. It is important that all the component libraries and processes be built with the same runtime switch (/MDd or /MD). You cannot mix these, or will get lots of assertions or crashes, usually when freeing memory. Often, libraries have different names (such as lib.dll vs. libD.dll), but many projects don't, like OpenSSL. You end up with the same library name but a different library path, so the settings must be different for the linker on the Debug and Release sides. You should be able to diagnose what version of something you have by using Microsoft's "depend.exe" utility and make sure that only one of MSVCRT.dll and MSVCRTD.dll are being pulled in by the library in question. NOTE ON NAMING AND LINKING For now, I've embedded the major library version (which has no connection to the OpenSSL package version) inside the name of the DLL and import library. This should help distinguish between versions and force people to consciously upgrade to a newer version in their Makefiles. I also embed a D on the end of the filename for the Debug build. Your project should link to saml_[D].lib where libversion is listed at the top of this file and D controls debug or non-debug.