MySQL 8.0 C API Developer Guide
int
mysql_library_init(int argc,
                   char **argv,
                   char **groups)
Call this function to initialize the MySQL client library before you call any other MySQL function.
            To avoid memory leaks after the application is done using
            the library (for example, after closing the connection to
            the server), be sure to call
            mysql_library_end()
            explicitly. This enables memory managment to be performed to
            clean up and free resources used by the library. See
            Section 5.4.44, “mysql_library_end()”.
          
          In a nonmultithreaded environment, the call to
          mysql_library_init() may be
          omitted, because mysql_init()
          invokes it automatically as necessary. However,
          mysql_library_init() is not
          thread-safe in a multithreaded environment, and thus neither
          is mysql_init(), which calls
          mysql_library_init(). You must
          either call
          mysql_library_init() prior to
          spawning any threads, or else use a mutex to protect the call,
          whether you invoke
          mysql_library_init() or
          indirectly through
          mysql_init(). Do this prior to
          any other client library call.
        
          The argc, argv, and
          groups arguments are unused. In older MySQL
          versions, they were used for applications linked against the
          embedded server, which is no longer supported. The call now
          should be written as
          mysql_library_init(0, NULL,
          NULL).
        
#include <mysql.h>
#include <stdlib.h>
int main(void) {
  if (mysql_library_init(0, NULL, NULL)) {
    fprintf(stderr, "could not initialize MySQL client library\n");
    exit(1);
  }
  /* Use any MySQL API functions here */
  mysql_library_end();
  return EXIT_SUCCESS;
}