文件首頁
MySQL 9.0 C API 開發者指南
下載本手冊

5.4.45 mysql_library_init()

int
mysql_library_init(int argc,
                   char **argv,
                   char **groups)

說明

在呼叫任何其他 MySQL 函式之前,請呼叫此函式以初始化 MySQL 用戶端程式庫。

注意

為了避免應用程式使用程式庫後發生記憶體洩漏(例如,在關閉與伺服器的連線之後),請務必明確呼叫 mysql_library_end()。這使得能夠執行記憶體管理,以清除並釋放程式庫所使用的資源。請參閱第 5.4.44 節,「mysql_library_end()」

在非多執行緒環境中,可以省略對 mysql_library_init() 的呼叫,因為 mysql_init() 會在必要時自動呼叫它。然而,mysql_library_init() 在多執行緒環境中並非執行緒安全,因此呼叫 mysql_library_init()mysql_init() 也不是。您必須在產生任何執行緒之前呼叫 mysql_library_init(),或者使用互斥鎖來保護呼叫,無論您是直接呼叫 mysql_library_init(),還是間接透過 mysql_init() 呼叫。請在任何其他用戶端程式庫呼叫之前執行此動作。

argcargvgroups 引數未使用。在較舊的 MySQL 版本中,它們用於連結至內嵌伺服器的應用程式,該伺服器已不再支援。現在應該將呼叫寫成 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;
}

傳回值

成功時傳回零。如果發生錯誤則傳回非零值。