Newer
Older
libkc / modules / include / kc_dl.h
/**
 * @file kc_dl.h
 * @brief 動的ライブラリモジュールヘッダファイル
 * @copyright  2002 - 2023  Nomura Kei
 * @depends
 *	kc.h
 */
#ifndef KC_DL_H
#define KC_DL_H

#include <kc.h>

#ifdef __cplusplus
extern "C"
{
	namespace kc
	{
		using namespace std;
#endif

#if (KC_IS_WINDOWS)
		typedef HINSTANCE dl_handle_t;
#else
#include <dlfcn.h>
typedef void *dl_handle_t;
#endif

		/**
		 * 指定された動的ライブラリをオープンします。
		 *
		 * @param filename 動的ライブラリのファイル名
		 */
		dl_handle_t KcDl_open(const char *filename);

		/**
		 * 動的ライブラリの関数を取得します。
		 *
		 * @param handle ハンドル
		 * @param symbol 関数のシンボル名
		 * @return 関数
		 */
		void *KcDl_sym(dl_handle_t handle, const char *symbol);

		/**
		 * 動的ライブラリをクローズします。
		 *
		 * @param handle クローズするハンドル
		 */
		bool KcDl_close(dl_handle_t handle);

#ifdef __cplusplus
	} // namespace kc
} // extern "C"
#endif
#endif // KC_DL_H