+ * please see the README for more information about installing it.
+ *
+ * To use wimlib in your program after installing it, include wimlib.h and link
+ * your program with @c -lwim.
+ *
+ * As of wimlib 1.5.0, wimlib.h is also compatible with C++.
+ *
+ * Note: before calling any other function declared in wimlib.h,
+ * wimlib_global_init() can (and in some cases, must) be called. See its
+ * documentation for more details.
+ *
+ * \section basic_wim_handling_concepts Basic WIM handling concepts
+ *
+ * wimlib wraps up a WIM file in an opaque ::WIMStruct structure. There are
+ * two ways to create such a structure: wimlib_open_wim(), which opens a WIM
+ * file and creates a ::WIMStruct representing it, and wimlib_create_new_wim(),
+ * which creates a new ::WIMStruct that initially contains no images and does
+ * not yet have a backing on-disk file.
+ *
+ * A WIM file, represented by a ::WIMStruct, contains zero or more images.
+ * Images can be extracted (or "applied") using wimlib_extract_image(), added
+ * (or "captured" or "appended") using wimlib_add_image(), deleted using
+ * wimlib_delete_image(), exported using wimlib_export_image(), and updated or
+ * modified using wimlib_update_image(). However, changes made to a WIM
+ * represented by a ::WIMStruct have no persistent effect until the WIM is
+ * actually written to an on-disk file. This can be done using wimlib_write(),
+ * but if the WIM was originally opened using wimlib_open_wim(), then
+ * wimlib_overwrite() can be used instead.
+ *
+ * Note that with this ::WIMStruct abstraction, performing many tasks on WIM
+ * files is a multi-step process. For example, to add, or "append" an image to
+ * an existing stand-alone WIM file in a way similar to <b>wimlib-imagex
+ * append</b>, you must call the following functions:
+ *
+ * 1. wimlib_open_wim()
+ * 2. wimlib_add_image()
+ * 3. wimlib_overwrite()
+ *
+ * This design is very much on purpose as it makes the library more useful in
+ * general by allowing functions to be composed in different ways. For example,
+ * you can make multiple changes to a WIM and commit them all to the underlying
+ * file in only one overwrite operation, which is more efficient.
+ *
+ * \section cleaning_up Cleaning up
+ *
+ * After you are done with any ::WIMStruct, you can call wimlib_free() to free
+ * all resources associated with it. Also, when you are completely done with
+ * using wimlib in your program, you can call wimlib_global_cleanup() to free
+ * any other resources allocated by the library.
+ *
+ * \section error_handling Error Handling
+ *
+ * Most functions in wimlib return 0 on success and a positive error code on
+ * failure. Use wimlib_get_error_string() to get a string that describes an
+ * error code. wimlib also can print error messages to standard error itself
+ * when an error happens, and these may be more informative than the error code;
+ * to enable this, call wimlib_set_print_errors(). Please note that this is for
+ * convenience only, and some errors can occur without a message being printed.
+ * Currently, error messages and strings (as well as all documentation, for that
+ * matter) are only available in English.