📄 ib5api_linux.cpp
字号:
g_ibAPI.isc_start_transaction = (isc_start_transaction_t)dlsym(g_hIB5DLL, "isc_start_transaction"); assert(g_ibAPI.isc_start_transaction != NULL);
g_ibAPI.isc_sqlcode = (isc_sqlcode_t)dlsym(g_hIB5DLL, "isc_sqlcode"); assert(g_ibAPI.isc_sqlcode != NULL);
g_ibAPI.isc_sql_interprete = (isc_sql_interprete_t)dlsym(g_hIB5DLL, "isc_sql_interprete"); assert(g_ibAPI.isc_sql_interprete != NULL);
g_ibAPI.isc_transaction_info = (isc_transaction_info_t)dlsym(g_hIB5DLL, "isc_transaction_info"); assert(g_ibAPI.isc_transaction_info != NULL);
g_ibAPI.isc_transact_request = (isc_transact_request_t)dlsym(g_hIB5DLL, "isc_transact_request"); assert(g_ibAPI.isc_transact_request != NULL);
g_ibAPI.isc_vax_integer = (isc_vax_integer_t)dlsym(g_hIB5DLL, "isc_vax_integer"); assert(g_ibAPI.isc_vax_integer != NULL);
g_ibAPI.isc_add_user = (isc_add_user_t)dlsym(g_hIB5DLL, "isc_add_user"); assert(g_ibAPI.isc_add_user != NULL);
g_ibAPI.isc_delete_user = (isc_delete_user_t)dlsym(g_hIB5DLL, "isc_delete_user"); assert(g_ibAPI.isc_delete_user != NULL);
g_ibAPI.isc_modify_user = (isc_modify_user_t)dlsym(g_hIB5DLL, "isc_modify_user"); assert(g_ibAPI.isc_modify_user != NULL);
g_ibAPI.isc_compile_request = (isc_compile_request_t)dlsym(g_hIB5DLL, "isc_compile_request"); assert(g_ibAPI.isc_compile_request != NULL);
g_ibAPI.isc_compile_request2 = (isc_compile_request2_t)dlsym(g_hIB5DLL, "isc_compile_request2"); assert(g_ibAPI.isc_compile_request2 != NULL);
g_ibAPI.isc_ddl = (isc_ddl_t)dlsym(g_hIB5DLL, "isc_ddl"); assert(g_ibAPI.isc_ddl != NULL);
g_ibAPI.isc_prepare_transaction = (isc_prepare_transaction_t)dlsym(g_hIB5DLL, "isc_prepare_transaction"); assert(g_ibAPI.isc_prepare_transaction != NULL);
g_ibAPI.isc_receive = (isc_receive_t)dlsym(g_hIB5DLL, "isc_receive"); assert(g_ibAPI.isc_receive != NULL);
g_ibAPI.isc_reconnect_transaction = (isc_reconnect_transaction_t)dlsym(g_hIB5DLL, "isc_reconnect_transaction"); assert(g_ibAPI.isc_reconnect_transaction != NULL);
g_ibAPI.isc_release_request = (isc_release_request_t)dlsym(g_hIB5DLL, "isc_release_request"); assert(g_ibAPI.isc_release_request != NULL);
g_ibAPI.isc_request_info = (isc_request_info_t)dlsym(g_hIB5DLL, "isc_request_info"); assert(g_ibAPI.isc_request_info != NULL);
g_ibAPI.isc_seek_blob = (isc_seek_blob_t)dlsym(g_hIB5DLL, "isc_seek_blob"); assert(g_ibAPI.isc_seek_blob != NULL);
g_ibAPI.isc_send = (isc_send_t)dlsym(g_hIB5DLL, "isc_send"); assert(g_ibAPI.isc_send != NULL);
g_ibAPI.isc_start_and_send = (isc_start_and_send_t)dlsym(g_hIB5DLL, "isc_start_and_send"); assert(g_ibAPI.isc_start_and_send != NULL);
g_ibAPI.isc_start_request = (isc_start_request_t)dlsym(g_hIB5DLL, "isc_start_request"); assert(g_ibAPI.isc_start_request != NULL);
g_ibAPI.isc_unwind_request = (isc_unwind_request_t)dlsym(g_hIB5DLL, "isc_unwind_request"); assert(g_ibAPI.isc_unwind_request != NULL);
g_ibAPI.isc_wait_for_event = (isc_wait_for_event_t)dlsym(g_hIB5DLL, "isc_wait_for_event"); assert(g_ibAPI.isc_wait_for_event != NULL);
g_ibAPI.isc_close = (isc_close_t)dlsym(g_hIB5DLL, "isc_close"); assert(g_ibAPI.isc_close != NULL);
g_ibAPI.isc_declare = (isc_declare_t)dlsym(g_hIB5DLL, "isc_declare"); assert(g_ibAPI.isc_declare != NULL);
g_ibAPI.isc_execute_immediate = (isc_execute_immediate_t)dlsym(g_hIB5DLL, "isc_execute_immediate"); assert(g_ibAPI.isc_execute_immediate != NULL);
g_ibAPI.isc_dsql_execute_m = (isc_dsql_execute_m_t)dlsym(g_hIB5DLL, "isc_dsql_execute_m"); assert(g_ibAPI.isc_dsql_execute_m != NULL);
g_ibAPI.isc_dsql_execute2_m = (isc_dsql_execute2_m_t)dlsym(g_hIB5DLL, "isc_dsql_execute2_m"); assert(g_ibAPI.isc_dsql_execute2_m != NULL);
g_ibAPI.isc_dsql_execute_immediate_m = (isc_dsql_execute_immediate_m_t)dlsym(g_hIB5DLL, "isc_dsql_execute_immediate_m"); assert(g_ibAPI.isc_dsql_execute_immediate_m != NULL);
g_ibAPI.isc_dsql_exec_immed3_m = (isc_dsql_exec_immed3_m_t)dlsym(g_hIB5DLL, "isc_dsql_exec_immed3_m"); assert(g_ibAPI.isc_dsql_exec_immed3_m != NULL);
g_ibAPI.isc_dsql_fetch_m = (isc_dsql_fetch_m_t)dlsym(g_hIB5DLL, "isc_dsql_fetch_m"); assert(g_ibAPI.isc_dsql_fetch_m != NULL);
g_ibAPI.isc_dsql_insert_m = (isc_dsql_insert_m_t)dlsym(g_hIB5DLL, "isc_dsql_insert_m"); assert(g_ibAPI.isc_dsql_insert_m != NULL);
g_ibAPI.isc_dsql_prepare_m = (isc_dsql_prepare_m_t)dlsym(g_hIB5DLL, "isc_dsql_prepare_m"); assert(g_ibAPI.isc_dsql_prepare_m != NULL);
g_ibAPI.isc_dsql_release = (isc_dsql_release_t)dlsym(g_hIB5DLL, "isc_dsql_release"); assert(g_ibAPI.isc_dsql_release != NULL);
g_ibAPI.isc_embed_dsql_close = (isc_embed_dsql_close_t)dlsym(g_hIB5DLL, "isc_embed_dsql_close"); assert(g_ibAPI.isc_embed_dsql_close != NULL);
g_ibAPI.isc_embed_dsql_declare = (isc_embed_dsql_declare_t)dlsym(g_hIB5DLL, "isc_embed_dsql_declare"); assert(g_ibAPI.isc_embed_dsql_declare != NULL);
g_ibAPI.isc_embed_dsql_describe = (isc_embed_dsql_describe_t)dlsym(g_hIB5DLL, "isc_embed_dsql_describe"); assert(g_ibAPI.isc_embed_dsql_describe != NULL);
g_ibAPI.isc_embed_dsql_describe_bind = (isc_embed_dsql_describe_bind_t)dlsym(g_hIB5DLL, "isc_embed_dsql_describe_bind"); assert(g_ibAPI.isc_embed_dsql_describe_bind != NULL);
g_ibAPI.isc_embed_dsql_execute = (isc_embed_dsql_execute_t)dlsym(g_hIB5DLL, "isc_embed_dsql_execute"); assert(g_ibAPI.isc_embed_dsql_execute != NULL);
g_ibAPI.isc_embed_dsql_execute2 = (isc_embed_dsql_execute2_t)dlsym(g_hIB5DLL, "isc_embed_dsql_execute2"); assert(g_ibAPI.isc_embed_dsql_execute2 != NULL);
g_ibAPI.isc_embed_dsql_execute_immed = (isc_embed_dsql_execute_immed_t)dlsym(g_hIB5DLL, "isc_embed_dsql_execute_immed"); assert(g_ibAPI.isc_embed_dsql_execute_immed != NULL);
g_ibAPI.isc_embed_dsql_fetch = (isc_embed_dsql_fetch_t)dlsym(g_hIB5DLL, "isc_embed_dsql_fetch"); assert(g_ibAPI.isc_embed_dsql_fetch != NULL);
g_ibAPI.isc_embed_dsql_open = (isc_embed_dsql_open_t)dlsym(g_hIB5DLL, "isc_embed_dsql_open"); assert(g_ibAPI.isc_embed_dsql_open != NULL);
g_ibAPI.isc_embed_dsql_open2 = (isc_embed_dsql_open2_t)dlsym(g_hIB5DLL, "isc_embed_dsql_open2"); assert(g_ibAPI.isc_embed_dsql_open2 != NULL);
g_ibAPI.isc_embed_dsql_insert = (isc_embed_dsql_insert_t)dlsym(g_hIB5DLL, "isc_embed_dsql_insert"); assert(g_ibAPI.isc_embed_dsql_insert != NULL);
g_ibAPI.isc_embed_dsql_prepare = (isc_embed_dsql_prepare_t)dlsym(g_hIB5DLL, "isc_embed_dsql_prepare"); assert(g_ibAPI.isc_embed_dsql_prepare != NULL);
g_ibAPI.isc_embed_dsql_release = (isc_embed_dsql_release_t)dlsym(g_hIB5DLL, "isc_embed_dsql_release"); assert(g_ibAPI.isc_embed_dsql_release != NULL);
g_ibAPI.isc_ftof = (isc_ftof_t)dlsym(g_hIB5DLL, "isc_ftof"); assert(g_ibAPI.isc_ftof != NULL);
g_ibAPI.isc_print_blr = (isc_print_blr_t)dlsym(g_hIB5DLL, "isc_print_blr"); assert(g_ibAPI.isc_print_blr != NULL);
g_ibAPI.isc_set_debug = (isc_set_debug_t)dlsym(g_hIB5DLL, "isc_set_debug"); assert(g_ibAPI.isc_set_debug != NULL);
g_ibAPI.isc_qtoq = (isc_qtoq_t)dlsym(g_hIB5DLL, "isc_qtoq"); assert(g_ibAPI.isc_qtoq != NULL);
g_ibAPI.isc_vtof = (isc_vtof_t)dlsym(g_hIB5DLL, "isc_vtof"); assert(g_ibAPI.isc_vtof != NULL);
g_ibAPI.isc_vtov = (isc_vtov_t)dlsym(g_hIB5DLL, "isc_vtov"); assert(g_ibAPI.isc_vtov != NULL);
g_ibAPI.isc_version = (isc_version_t)dlsym(g_hIB5DLL, "isc_version"); assert(g_ibAPI.isc_version != NULL);
}
static void ResetAPI()
{
g_ibAPI.isc_attach_database = NULL;
g_ibAPI.isc_array_gen_sdl = NULL;
g_ibAPI.isc_array_get_slice = NULL;
g_ibAPI.isc_array_lookup_bounds = NULL;
g_ibAPI.isc_array_lookup_desc = NULL;
g_ibAPI.isc_array_set_desc = NULL;
g_ibAPI.isc_array_put_slice = NULL;
g_ibAPI.isc_blob_default_desc = NULL;
g_ibAPI.isc_blob_gen_bpb = NULL;
g_ibAPI.isc_blob_info = NULL;
g_ibAPI.isc_blob_lookup_desc = NULL;
g_ibAPI.isc_blob_set_desc = NULL;
g_ibAPI.isc_cancel_blob = NULL;
g_ibAPI.isc_cancel_events = NULL;
g_ibAPI.isc_close_blob = NULL;
g_ibAPI.isc_commit_retaining = NULL;
g_ibAPI.isc_commit_transaction = NULL;
g_ibAPI.isc_create_blob = NULL;
g_ibAPI.isc_create_blob2 = NULL;
g_ibAPI.isc_create_database = NULL;
g_ibAPI.isc_database_info = NULL;
g_ibAPI.isc_decode_date = NULL;
g_ibAPI.isc_detach_database = NULL;
g_ibAPI.isc_drop_database = NULL;
g_ibAPI.isc_dsql_allocate_statement = NULL;
g_ibAPI.isc_dsql_alloc_statement2 = NULL;
g_ibAPI.isc_dsql_describe = NULL;
g_ibAPI.isc_dsql_describe_bind = NULL;
g_ibAPI.isc_dsql_exec_immed2 = NULL;
g_ibAPI.isc_dsql_execute = NULL;
g_ibAPI.isc_dsql_execute2 = NULL;
g_ibAPI.isc_dsql_execute_immediate = NULL;
g_ibAPI.isc_dsql_fetch = NULL;
g_ibAPI.isc_dsql_finish = NULL;
g_ibAPI.isc_dsql_free_statement = NULL;
g_ibAPI.isc_dsql_insert = NULL;
g_ibAPI.isc_dsql_prepare = NULL;
g_ibAPI.isc_dsql_set_cursor_name = NULL;
g_ibAPI.isc_dsql_sql_info = NULL;
g_ibAPI.isc_encode_date = NULL;
g_ibAPI.isc_event_block = NULL;
g_ibAPI.isc_event_counts = NULL;
g_ibAPI.isc_expand_dpb = NULL;
g_ibAPI.isc_modify_dpb = NULL;
g_ibAPI.isc_free = NULL;
g_ibAPI.isc_get_segment = NULL;
g_ibAPI.isc_get_slice = NULL;
g_ibAPI.isc_interprete = NULL;
g_ibAPI.isc_open_blob = NULL;
g_ibAPI.isc_open_blob2 = NULL;
g_ibAPI.isc_prepare_transaction2 = NULL;
g_ibAPI.isc_print_sqlerror = NULL;
g_ibAPI.isc_print_status = NULL;
g_ibAPI.isc_put_segment = NULL;
g_ibAPI.isc_put_slice = NULL;
g_ibAPI.isc_que_events = NULL;
g_ibAPI.isc_rollback_transaction = NULL;
g_ibAPI.isc_start_multiple = NULL;
g_ibAPI.isc_start_transaction = NULL;
g_ibAPI.isc_sqlcode = NULL;
g_ibAPI.isc_sql_interprete = NULL;
g_ibAPI.isc_transaction_info = NULL;
g_ibAPI.isc_transact_request = NULL;
g_ibAPI.isc_vax_integer = NULL;
g_ibAPI.isc_add_user = NULL;
g_ibAPI.isc_delete_user = NULL;
g_ibAPI.isc_modify_user = NULL;
g_ibAPI.isc_compile_request = NULL;
g_ibAPI.isc_compile_request2 = NULL;
g_ibAPI.isc_ddl = NULL;
g_ibAPI.isc_prepare_transaction = NULL;
g_ibAPI.isc_receive = NULL;
g_ibAPI.isc_reconnect_transaction = NULL;
g_ibAPI.isc_release_request = NULL;
g_ibAPI.isc_request_info = NULL;
g_ibAPI.isc_seek_blob = NULL;
g_ibAPI.isc_send = NULL;
g_ibAPI.isc_start_and_send = NULL;
g_ibAPI.isc_start_request = NULL;
g_ibAPI.isc_unwind_request = NULL;
g_ibAPI.isc_wait_for_event = NULL;
g_ibAPI.isc_close = NULL;
g_ibAPI.isc_declare = NULL;
g_ibAPI.isc_execute_immediate = NULL;
g_ibAPI.isc_dsql_execute_m = NULL;
g_ibAPI.isc_dsql_execute2_m = NULL;
g_ibAPI.isc_dsql_execute_immediate_m = NULL;
g_ibAPI.isc_dsql_exec_immed3_m = NULL;
g_ibAPI.isc_dsql_fetch_m = NULL;
g_ibAPI.isc_dsql_insert_m = NULL;
g_ibAPI.isc_dsql_prepare_m = NULL;
g_ibAPI.isc_dsql_release = NULL;
g_ibAPI.isc_embed_dsql_close = NULL;
g_ibAPI.isc_embed_dsql_declare = NULL;
g_ibAPI.isc_embed_dsql_describe = NULL;
g_ibAPI.isc_embed_dsql_describe_bind = NULL;
g_ibAPI.isc_embed_dsql_execute = NULL;
g_ibAPI.isc_embed_dsql_execute2 = NULL;
g_ibAPI.isc_embed_dsql_execute_immed = NULL;
g_ibAPI.isc_embed_dsql_fetch = NULL;
g_ibAPI.isc_embed_dsql_open = NULL;
g_ibAPI.isc_embed_dsql_open2 = NULL;
g_ibAPI.isc_embed_dsql_insert = NULL;
g_ibAPI.isc_embed_dsql_prepare = NULL;
g_ibAPI.isc_embed_dsql_release = NULL;
g_ibAPI.isc_ftof = NULL;
g_ibAPI.isc_print_blr = NULL;
g_ibAPI.isc_set_debug = NULL;
g_ibAPI.isc_qtoq = NULL;
g_ibAPI.isc_vtof = NULL;
g_ibAPI.isc_vtov = NULL;
g_ibAPI.isc_version = NULL;
}
void AddIB5Support()
{
if(!g_nIB5DLLRefs)
{
g_hCryptDLL = ::dlopen(g_sCryptDLLName, RTLD_LAZY|RTLD_GLOBAL);
if(!g_hCryptDLL)
throw SAException(SA_Library_Error, -1, -1, IDS_LOAD_LIBRARY_FAILS, ::dlerror(), g_sCryptDLLName);
// load InterBase API library
g_hIB5DLL = ::dlopen(g_sIB5DLLName, RTLD_NOW|RTLD_GLOBAL);
if(!g_hIB5DLL)
{
::dlclose(g_hCryptDLL);
throw SAException(SA_Library_Error, -1, -1, IDS_LOAD_LIBRARY_FAILS, ::dlerror(), g_sIB5DLLName);
}
g_nIB5DLLVersionLoaded = 0; // Version unknown
LoadAPI();
}
g_nIB5DLLRefs++;
}
void ReleaseIB5Support()
{
assert(g_nIB5DLLRefs > 0);
g_nIB5DLLRefs--;
if(!g_nIB5DLLRefs)
{
g_nIB5DLLVersionLoaded = 0;
ResetAPI();
dlclose(g_hCryptDLL);
//dlclose(g_hIB5DLL);
g_hIB5DLL = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -