+/**
+ * Joins a set of split WIMs into a one-part WIM.
+ *
+ * @param swms
+ * An array of strings that give the filenames of all parts of the split
+ * WIM.
+ * @param num_swms
+ * Number of filenames in @a swms.
+ * @param output_path
+ * The path to write the one-part WIM to.
+ * @param flags
+ * ::WIMLIB_OPEN_FLAG_CHECK_INTEGRITY to check the split WIMs' integrity
+ * tables (if present) when opening them, and include an integrity table in
+ * the output WIM.
+ *
+ * @return 0 on success; nonzero on error. This function may return any value
+ * returned by wimlib_open_wim() except ::WIMLIB_ERR_SPLIT_UNSUPPORTED, as well
+ * as the following error codes:
+ *
+ * @retval ::WIMLIB_ERR_SPLIT_INVALID
+ * The split WIMs do not form a valid WIM because they do not include all
+ * the parts of the original WIM, there are duplicate parts, or not all the
+ * parts have the same GUID and compression type.
+ * @retval ::WIMLIB_ERR_WRITE
+ * An error occurred when trying to write data to the new WIM at @a output_path.
+ *
+ * Note that this function merely copies the resources, so it will not check to
+ * see if the resources, including the metadata resource, are valid or not.
+ */
+extern int wimlib_join(const char **swms, int num_swms,
+ const char *output_path, int flags);
+