// 程序退出释放动态加载的库 static void __sqlite_dll_unload(void) { if (__sqlite_dll != NULL) { acl_dlclose(__sqlite_dll); __sqlite_dll = NULL; logger("sqlite3.dll unload ok"); } }
// 程序退出时释放动态加载的 zlib.dll 库 static void __zlib_dll_unload(void) { if (__zlib_dll != NULL) { acl_dlclose(__zlib_dll); __zlib_dll = NULL; logger("zlib.dll unload ok"); } }
// 程序退出时释放动态加载的 iconv.dll 库 static void __iconv_dll_unload(void) { if (__iconv_dll != NULL) { acl_dlclose(__iconv_dll); __iconv_dll = NULL; logger("iconv.dll unload ok"); } }
// 程序退出释放动态加载的库 static void __pgsql_dll_unload(void) { if (__pgsql_dll != NULL) { acl_dlclose(__pgsql_dll); __pgsql_dll = NULL; logger("%s unload ok", __pgsql_path.c_str()); } }
// 程序退出释放动态加载的库 static void __mysql_dll_unload(void) { if (__mysql_dll != NULL) { acl_dlclose(__mysql_dll); __mysql_dll = NULL; logger("libmysql.dll unload ok"); } }
// 程序退出释放动态加载的库 static void __mysql_dll_unload(void) { if (__mysql_dll != NULL) { // 即使主线程没有调用 mysql_thread_init 过程,这样做也是 // 无害的,因为 libmysqlclient 内部会自动判断取得的线程 // 局部变量是否有效 #ifdef ACL_UNIX if (__mysql_thread_end != NULL) __mysql_thread_end(); if (__mysql_server_end != NULL) { __mysql_server_end(); __mysql_server_end = NULL; } #endif acl_dlclose(__mysql_dll); __mysql_dll = NULL; logger("%s unload ok", __mysql_path.c_str()); } }