Next: , Up: Using libltdl   [Contents][Index]


10.1 ¥×¥í¥°¥é¥à¤Ç¤Îlibltdl¤Î»ÈÍÑË¡

libltdl API¤Ï¡¤¶¯ÎϤÊSolaris¤ÈLinux¤Îdlopen¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë»÷¤Æ¤¤¤Æ¡¤ ¤½¤ì¤Ï¡¤Èó¾ï¤Ë´Êñ¤Ç¤¹¤¬¶¯ÎϤǤ¹¡¥

¥×¥í¥°¥é¥à¤Çlibltdl¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¡¤¥Ø¥Ã¥À¥Õ¥¡¥¤¥ëltdl.h¤ò¥¤¥ó ¥¯¥ë¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

#include <ltdl.h>

libltdl¤ÎÁ°²ó¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¤POSIX̾Á°¶õ´Ö¤Î´·½¬¤Ë°ãÈ¿¤·¤Æ¤¤¤¿¥· ¥ó¥Ü¥ë¤ò¤¤¤¯¤Ä¤«»ÈÍѤ·¤Æ¤¤¤Þ¤·¤¿¡¥¤³¤ì¤é¤Î¥·¥ó¥Ü¥ë¤Î»ÈÍѤϡ¤¸½ºß¤Ç¤ÏÈó Æñ¤µ¤ì¤ë¤Î¤Ç¡¤¤³¤³¤Çµ­½Ò¤µ¤ì¤ë¤è¤¦¤ËÃÖ´¹¤µ¤ì¤Þ¤·¤¿¡¥¸Å¤¤ÈóÆñ¤µ¤ì¤½¤¦¤Ê ¥·¥ó¥Ü¥ë̾¤Ë°Í¸¤·¤¿¥³¡¼¥É¤¬¤¢¤ë¾ì¹ç¡¤ltdl.h¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë Á°¤Ë‘LT_NON_POSIX_NAMESPACE’¤òÄêµÁ¤¹¤ë¤È¡¤ÊÑ´¹¤µ¤ì¤¿¥Þ¥¯¥í¤¬Äó¶¡ ¤µ¤ì¤Þ¤¹¡¥»ÈÍѤ¹¤ë¥·¥ó¥Ü¥ë¤ÎÁȤ¬²¿¤Ç¤¢¤Ã¤Æ¤â¡¤¿·¤·¤¤API¤ÏÁ°²ó¤Î¤â¤Î¤È ¥Ð¥¤¥Ê¥ê¸ß´¹¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¤¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Îlibltdl¤ò»ÈÍѤ¹¤ë¤¿¤á¡¤¥¢¥× ¥ê¥±¡¼¥·¥ç¥ó¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡¥

libltdl¤¬¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ç¤Ê¤¤¡¤¤¹¤Ê¤ï¤Á¡¤¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¥¢¥×¥ê¥±¡¼¥·¥ç ¥ó¤Ï¡¤libtool¤ËÂФ·¥ß¥å¡¼¥Æ¥Ã¥¯¥¹¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯ ¤À¤µ¤¤¡¥¤½¤ì¤Ï¡¤GNU/Linux¤Îglibc 2.0¤Î‘RTLD_LAZY’¤òÍѤ¤¤¿ dlopen¤¬(¥Ç¥Õ¥©¥ë¥È¤Çlibtool¤ò»ÈÍѤ·¤Þ¤¹)¡¤¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ç¤Ï¤Ê ¤¤¤³¤È¤¬Êó¹ð¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¤¤³¤ÎÌäÂê¤Ï¡¤glibc 2.1¤Ç¤ª¤½¤é¤¯½¤Àµ¤µ¤ì¤ë ¤Ç¤·¤ç¡¥°ìÊý¡¤‘RTLD_NOW’¤Ï¡¤FreeBSD¾å¤Î¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¥¢¥×¥ê¥±¡¼¥·¥ç ¥ó¤ÇÌäÂ꤬À¸¤¸¤¿¤ÈÊó¹ð¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥¤³¤ì¤é¤ÎÌäÂê¤Ë´Ø¤¹¤ëºî¶È¤Ï¡¤ÆÉ¼Ô¤Î ±é½¬¤È¤·¤Æ»Ä¤Ã¤Æ¤¤¤Þ¤¹¡¥¹×¸¥¤Ï¡¤¤­¤Ã¤È´¿·Þ¤µ¤ì¤Þ¤¹¡¥

°Ê²¼¤Î·¿¤Ïltdl.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥

Type: lt_ptr

lt_ptr¤Ï¡¤ÈÆÍѥݥ¤¥ó¥¿¤Ç¤¹¡¥

Type: lt_dlhandle

lt_dlhandle¤Ï¥â¥¸¥å¡¼¥ë"¥Ï¥ó¥É¥ë"¤Ç¤¹¡¥¤¹¤Ù¤Æ¤Îlt_dlopen¤µ¤ì¤ë ¥â¥¸¥å¡¼¥ë¤Ï¤½¤ì¤Ë´ØÏ¢ÉÕ¤±¤µ¤ì¤¿¥Ï¥ó¥É¥ë¤¬¤¢¤ê¤Þ¤¹¡¥

Type: lt_dlsymlist

lt_dlsymlist¤Ïdlpreopen¤µ¤ì¤ë¥â¥¸¥å¡¼¥ë¤Î¥·¥ó¥Ü¥ë¥ê¥¹¥È¤Ç¤¹¡¥¤³ ¤Î¹½Â¤ÂΤϡ¤see Dlpreopening¤Çµ­½Ò¤µ¤ì¤Þ¤¹¡¥

libltdl¤Ï°Ê²¼¤Î´Ø¿ô¤òÄ󶡤·¤Þ¤¹¡¥

Function: int lt_dlinit (void)

libltdl¤ò½é´ü²½¤·¤Þ¤¹¡¥¤³¤Î´Ø¿ô¤Ï¡¤libltdl»ÈÍѤ¹¤ëÁ°¤Ë¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢ ¤ê¡¤Ê£¿ô²ó¸Æ¤Ó½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¤¹¡¥À®¸ù¤·¤¿¤é0¡¤¤½¤ì°Ê³°¤Ç¤Ï¥¨¥é¡¼¤ÎÈÖ ¹æ¤òÊÖ¤·¤Þ¤¹¡¥

Function: int lt_dlexit (void)

libltdl¤ò½ªÎ»¤·¡¤¤¹¤Ù¤Æ¤Î¥â¥¸¥å¡¼¥ë¤òÊĤ¸¤Þ¤¹¡¥¤³¤Î´Ø¿ô¤Ï¡¤ lt_dlinit¤¬Àµ¾ï¤Ë¸Æ¤Ó½Ð¤µ¤ì¤¿²ó¿ô¤ÈƱ¤¸¤À¤±¸Æ¤Ó½Ð¤µ¤ì¤¿¤È¤­¡¤ libltdl¤ò½ªÎ»¤¹¤ë¤À¤±¤Ç¤¹¡¥À®¸ù¤·¤¿¤é0¡¤¤½¤ì°Ê³°¤Ç¤Ï¥¨¥é¡¼¤ÎÈÖ¹æ¤òÊÖ¤· ¤Þ¤¹¡¥

Function: lt_dlhandle lt_dlopen (const char *filename)

¥Õ¥¡¥¤¥ë̾filename¤òÍѤ¤¤Æ¥â¥¸¥å¡¼¥ë¤ò³«¤­¡¤¤½¤Î¥Ï¥ó¥É¥ë¤òÊÖ¤·¤Þ ¤¹¡¥lt_dlopen¤Ï¡¤libtool¥À¥¤¥Ê¥ß¥Ã¥¯¥â¥¸¥å¡¼¥ë¡¤¥×¥ê¥í¡¼¥É¤µ¤ì ¤¿¥¹¥¿¥Æ¥£¥Ã¥¯¥â¥¸¥å¡¼¥ë¡¤¥×¥í¥°¥é¥à¼«¿È¡¤¤½¤·¤Æ¥Í¥¤¥Æ¥£¥Ö¤Ê¥À¥¤¥Ê¥ß¥Ã ¥¯¥é¥¤¥Ö¥é¥ê¤ò³«¤¯¤³¤È¤¬²Äǽ¤Ç¤¹¡¥

¥â¥¸¥å¡¼¥ëÆâ¤Î̤²ò·è¤Î¥·¥ó¥Ü¥ë¤Ï¡¤¤½¤ì¤¬°Í¸¤¹¤ë(¤Þ¤À¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤) ¥é¥¤¥Ö¥é¥ê¤È¡¤Á°¤â¤Ã¤Ædlopen¤µ¤ì¤¿¥â¥¸¥å¡¼¥ë¤òÍѤ¤¤Æ²ò·è¤µ¤ì¤Þ¤¹¡¥¤³¤Î ¥â¥¸¥å¡¼¥ë¤ò»ÈÍѤ·¤Æ¤¤¤ë¼Â¹Ô·Á¼°¤¬-export-dynamic¥Õ¥é¥°¤Ç¥ê¥ó¥¯ ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¤¼Â¹Ô·Á¼°¤ÎÂç°èŪ¤Ê¥·¥ó¥Ü¥ë¤â¥â¥¸¥å¡¼¥ëÆâ¤Î»²¾È¤Î²ò·è¤Ë »ÈÍѤµ¤ì¤Þ¤¹¡¥

filename¤¬NULL¤Ç¥×¥í¥°¥é¥à¤¬-export-dynamic¤ä -dlopen self¤òÍѤ¤¤Æ¥ê¥ó¥¯¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¤lt_dlopen¤Ï¥× ¥í¥°¥é¥à¼«¿È¤Î¥Ï¥ó¥É¥ë¤òÊÖ¤·¡¤¤½¤ì¤Ï¤½¤Î¥·¥ó¥Ü¥ë¤Î¥¢¥¯¥»¥¹¤Ë»ÈÍѲÄǽ¤Ç ¤¹¡¥

libltdl¤¬¥é¥¤¥Ö¥é¥ê¤ò¸«¤Ä¤±¤é¤ì¤º¡¤¥Õ¥¡¥¤¥ë̾filename¤¬¥Ç¥£¥ì¥¯ ¥È¥ê¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò»ý¤¿¤Ê¤¤¾ì¹ç¡¤¤½¤ì¤Ï¡¤°Ê²¼¤Î¸¡º÷¥Ñ¥¹¤ò(°Ê²¼¤Î½çÈÖ ¤Ç)¡¤¤µ¤é¤Ë¥â¥¸¥å¡¼¥ë¤ò¸¡º÷¤·¤Þ¤¹¡¥

  1. ¥æ¡¼¥¶ÄêµÁ¤Î¸¡º÷¥Ñ¥¹¡§ ¤³¤Î¸¡º÷¥Ñ¥¹¤Ï¡¤´Ø¿ôlt_dlsetsearchpath¡¤ lt_dladdsearchdir¡¤¤½¤·¤Ælt_dlinsertsearchdir¤òÍѤ¤¤¿¥× ¥í¥°¥é¥à¤ÇÊѹ¹²Äǽ¤Ç¤¹¡¥
  2. libltdl¤Î¸¡º÷¥Ñ¥¹¡§ ¤³¤Î¸¡º÷¥Ñ¥¹¤Ï¡¤´Ä¶­ÊÑ¿ôLTDL_LIBRARY_PATH¤ÎÃͤǤ¹¡¥
  3. ¥·¥¹¥Æ¥à¤Î¥é¥¤¥Ö¥é¥ê¸¡º÷¥Ñ¥¹¡§ ¥·¥¹¥Æ¥à°Í¸¤Î¥é¥¤¥Ö¥é¥ê¸¡º÷¥Ñ¥¹¤Ç¤¹(Î㤨¤Ð¡¤Linux¤Ç¤Ï LD_LIBRARY_PATH¤Ë¤Ê¤ê¤Þ¤¹)¡¥

¤½¤ì¤¾¤ì¤Î¸¡º÷¥Ñ¥¹¤Ï¡¤Î㤨¤Ð"/usr/lib/mypkg:/lib/foo"¤Î¤è¤¦¤Ë¡¤ ¥³¥í¥ó¤ÇʬΥ¤µ¤ì¤¿ÀäÂÐŪ¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

Ʊ¤¸¥â¥¸¥å¡¼¥ë¤¬Ê£¿ô²ó¥í¡¼¥É¤µ¤ì¤¿¾ì¹ç¡¤Æ±¤¸¥Ï¥ó¥É¥ë¤¬ÊÖ¤µ¤ì¤Þ¤¹¡¥¤¢¤é ¤æ¤ë¸¶°ø¤Çlt_dlopen¤¬¼ºÇÔ¤·¤¿¾ì¹ç¡¤NULL¤¬ÊÖ¤µ¤ì¤Þ¤¹¡¥

Function: lt_dlhandle lt_dlopenext (const char *filename)

¥Õ¥¡¥¤¥ë̾¤Ë°Û¤Ê¤ë¥Õ¥¡¥¤¥ë̾¤Î³ÈÄ¥»Ò¤òÄɲäò»î¤ß¤ë°Ê³°¤Ï¡¤ lt_dlopen¤ÈƱ¤¸¤Ç¤¹¡¥¥Õ¥¡¥¤¥ë̾filename¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤¬¸« ¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¤libltdl¤Ï¡¤°Ê²¼¤Î³ÈÄ¥»Ò¤ÎÄɲäò»î¤ß¤Þ¤¹¡¥

  1. libtool¤Î¥¢¡¼¥«¥¤¥Ö³ÈÄ¥»Ò‘.la
  2. ¥Û¥¹¥È¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ÎËÜÍè¤Î¥À¥¤¥Ê¥ß¥Ã¥¯¥é¥¤¥Ö¥é¥ê¤Ë»ÈÍѤµ¤ì¤ë³ÈÄ¥»Ò ¤Ç¡¤Î㤨¤Ð¡¤‘.so’¡¤‘.sl’Åù¤Ç¤¹¡¥

¤³¤Îõº÷¼êË¡¤Ï¡¤ËÜÍè¤Î¥À¥¤¥Ê¥ß¥Ã¥¯¥é¥¤¥Ö¥é¥ê¤Î̿̾µ¬Â§¤òÃΤé¤Ê¤¤¥×¥í¥° ¥é¥à¤¬¡¤¤½¤Î¤è¤¦¤Ê¥é¥¤¥Ö¥é¥ê¤ò¡¤libtool¥â¥¸¥å¡¼¥ë¤ÈƱÍͤˡ¤Æ©²áŪ¤Ë dlopen¤¹¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¤¿¤á¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡¥

Function: int lt_dlclose (lt_dlhandle handle)

¥â¥¸¥å¡¼¥ëhandle¤Î»²¾È¥«¥¦¥ó¥È¤ò¸º¤é¤·¤Þ¤¹¡¥¥¼¥í¤Ë¤Ê¤Ã¤¿¤ê¡¤¤³¤Î ¥â¥¸¥å¡¼¥ë¤Ë°Í¸¤¹¤ë¾¤Î¥â¥¸¥å¡¼¥ë¤¬¤Ê¤¤¾ì¹ç¡¤¥â¥¸¥å¡¼¥ë¤Ï¥¢¥ó¥í¡¼¥É¤µ ¤ì¤Þ¤¹¡¥À®¸ù»þ¤Ë¤Ï0¤òÊÖ¤·¤Þ¤¹¡¥

Function: lt_ptr lt_dlsym (lt_dlhandle handle, const char *name)

¥â¥¸¥å¡¼¥ëhandleÆâ¤Î¥¢¥É¥ì¥¹¤òÊÖ¤·¡¤¤½¤³¤Ç¤Ï¡¤¥Ì¥ë¤Ç½ªÃ¼¤µ¤ì¤¿Ê¸ »úÎóname¤ÇÍ¿¤¨¤é¤ì¤ë¥·¥ó¥Ü¥ë¤¬¥í¡¼¥É¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥¥·¥ó¥Ü¥ë¤¬¸«¤Ä ¤«¤é¤Ê¤¤¾ì¹ç¤ÏNULL¤òÊÖ¤·¤Þ¤¹¡¥

Function: const char * lt_dlerror (void)

libltdl¤Î¤¢¤é¤æ¤ë´Ø¿ô¤«¤éȯÀ¸¤·¤¿ºÇ¤â¿·¤·¤¤¥¨¥é¡¼¤òµ­½Ò¤¹¤ë¡¤²ÄÆÉÀ­¤Î ¹â¤¤Ê¸»úÎó¤òÊÖ¤·¤Þ¤¹¡¥½é´ü²½¤«¤é¤Þ¤¿¤ÏºÇ¸å¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Æ¤«¤é¥¨¥é¡¼¤¬È¯ À¸¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤NULL¤òÊÖ¤·¤Þ¤¹¡¥

Function: int lt_dlpreload (const lt_dlsymlist *preloaded)

¥×¥ê¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¥â¥¸¥å¡¼¥ëpreloaded¤Î¥ê¥¹¥È¤òÅÐÏ¿¤·¤Þ¤¹¡¥ preloaded¤¬NULL¤Î¾ì¹ç¡¤lt_dlpreload_default¤ÇÀßÄê ¤µ¤ì¤Æ¤¤¤ë¥ê¥¹¥È°Ê³°¤Î¡¤¤³¤ì¤Þ¤ÇÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥·¥ó¥Ü¥ë¥ê¥¹¥È¤¬ ¸¡½Ð¤µ¤ì¤Þ¤¹¡¥À®¸ù»þ¤Ë¤Ï0¤òÊÖ¤·¤Þ¤¹¡¥

Function: int lt_dlpreload_default (const lt_dlsymlist *preloaded)

¥×¥ê¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¥â¥¸¥å¡¼¥ë¥ê¥¹¥È¤Î¥Ç¥Õ¥©¥ë¥È¤òpreloaded¤ËÀß Äꤷ¡¤¤½¤ì¤Ïlt_dlpreload¤Ç¸¡½Ð¤µ¤ì¤Þ¤»¤ó¡¥¤³¤Î´Ø¿ô¤Ï¡¤ lt_dlinit¤ò»ÈÍѤ·¤Æ½é´ü²½¤µ¤ì¤ë¤¿¤á¤Ëlibltdl¤òÍ׵ᤷ¤Ê¤¤ ¤³¤È¤È¡¤¥Ç¥Õ¥©¥ë¥È¤Ç¥×¥ê¥í¡¼¥É¤µ¤ì¤ë¥â¥¸¥å¡¼¥ë¤òÅÐÏ¿¤¹¤ë¤¿¤á¤Ë¥×¥í¥°¥é ¥à¤Ç»ÈÍѤǤ­¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥¤³¤Î´Ø¿ô¤òľÀܸƤӽФ¹Âå¤ï¤ê¤Ë¡¤ ¤Û¤È¤ó¤É¤Î¥×¥í¥°¥é¥à¤Ï¥Þ¥¯¥íLTDL_SET_PRELOADED_SYMBOLS¤ò»ÈÍѤ· ¤Þ¤¹¡¥

À®¸ù»þ¤Ë¤Ï0¤òÊÖ¤·¤Þ¤¹¡¥

Macro: LTDL_SET_PRELOADED_SYMBOLS

¥×¥ê¥í¡¼¥É¤µ¤ì¤ë¥·¥ó¥Ü¥ë¤Î¥Ç¥Õ¥©¥ë¥È¥ê¥¹¥È¤òÀßÄꤷ¤Þ¤¹¡¥¥×¥ê¥í¡¼¥É¤µ¤ì ¤ëlibltdl¤Î¥â¥¸¥å¡¼¥ë¤ò½é´ü²½¤¹¤ë¤¿¤á¤Ë¡¤¥×¥í¥°¥é¥à¤Ç»ÈÍѤ·¤¿Êý¤¬Îɤ¤ ¤Ç¤·¤ç¤¦¡¥

#include <ltdl.h>

int main() {
  /* ... */
  LTDL_SET_PRELOADED_SYMBOLS();
  /* ... */
}
Function: int lt_dladdsearchdir (const char *search_dir)

¸¡º÷¥Ç¥£¥ì¥¯¥È¥êsearch_dir¤ò¸½ºß¤Î¥æ¡¼¥¶ÄêµÁ¤Î¥é¥¤¥Ö¥é¥ê¸¡º÷¥Ñ¥¹ ¤Ë¸åÃÖ¤·¤Þ¤¹¡¥À®¸ù»þ¤Ë¤Ï0¤òÊÖ¤·¤Þ¤¹¡¥

Function: int lt_dlinsertsearchdir (const char *before, const char *search_dir)

¸¡º÷¥Ç¥£¥ì¥¯¥È¥êsearch_dir¤ò¥æ¡¼¥¶ÄêµÁ¤Î¥é¥¤¥Ö¥é¥ê¸¡º÷¥Ñ¥¹¤ò¡¤¥¢ ¥É¥ì¥¹before¤Ç»Ï¤Þ¤ë¹àÌܤÎľÁ°¤ËÁÞÆþ¤·¤Þ¤¹¡¥before¤¬ ‘NULL’¤Î¾ì¹ç¡¤lt_dladdsearchdir¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¤Î¤ÈƱÍͤ˸å ÃÖ¤·¤Þ¤¹¡¥À®¸ù»þ¤Ë¤Ï0¤òÊÖ¤·¤Þ¤¹¡¥

Function: int lt_dlsetsearchpath (const char *search_path)

¸½ºß¤Î¥æ¡¼¥¶ÄêµÁ¤Î¥é¥¤¥Ö¥é¥ê¸¡º÷¥Ñ¥¹¤òsearch_path¤ÇÃÖ´¹¤·¡¤¤½¤ì ¤Ï¥³¥í¥ó¤Çʬ¤±¤é¤ì¤¿ÀäÂÐŪ¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥¹¥È¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥ À®¸ù»þ¤Ë¤Ï0¤òÊÖ¤·¤Þ¤¹¡¥

Function: const char * lt_dlgetsearchpath (void)

¸½ºß¤Î¥æ¡¼¥¶ÄêµÁ¤Î¥é¥¤¥Ö¥é¥ê¸¡º÷¥Ñ¥¹¤òÊÖ¤·¤Þ¤¹¡¥

Function: int lt_dlforeachfile (const char *search_path, int (*func) (const char *filenamelt_ptr data), lt_ptr data)

¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¤Ï¡¤´ûÃΤÎ̾Á°¤Ç¥â¥¸¥å¡¼¥ë¤ò¸ÄÊÌ¤Ë¥í¡¼¥É¤·¤¿¤¯ ¤Ê¤¯¡¤¤à¤·¤í¥Ç¥£¥ì¥¯¥È¥ê¤ÎÁȤߤ«¤é¤¹¤Ù¤Æ¤Î¥â¥¸¥å¡¼¥ë¤ò¸«¤Ä¤±¤¿¤ê¡¤½é´ü ²½Ãæ¤Ë¤¹¤Ù¤Æ¥í¡¼¥É¤·¤¿¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡¥¤³¤Î´Ø¿ô¤òÍѤ¤¤ë¤È¡¤libltdl¤Ë ¸õÊä¤È¤Ê¤ësearch_pathÆâ¤Î¥³¥í¥ó¤ÇʬΥ¤µ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¥ê¥¹¥È¤ò Áöºº¤µ¤»¡¤¤½¤ì¤é¤òÆÈ¼«¤Î¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ôfunc¤ËÅϤ¹data¤ÈÊ» ¤»¤ÆÅϤ¹¤³¤È¤¬²Äǽ¤Ç¤¹¡¥seach_path¤¬‘NULL’¤Î¾ì¹ç¡¤ lt_dlopen¤¬Ä´ºº¤¹¤ëɸ½àŪ¤Ê¾ì½ê¤ò¤¹¤Ù¤Æ¸¡º÷¤·¤Þ¤¹¡¥¤³¤Î´Ø¿ô¤Ï¡¤ ¤³¤ì¤é¤Î¸Æ¤Ó½Ð¤·¤Î°ì¤Ä¤Ç¤â¥¼¥í°Ê³°¤ÎÃͤ¬ÊÖ¤µ¤ì¤ë¤Þ¤Ç¡¤¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë¤¬ Ë´¤¯¤Ê¤ë¤Þ¤Ç¡¤search_path¤Ç¸«¤Ä¤«¤Ã¤¿¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë¤ËÂФ·¡¤ func¤ò¸Æ¤Ó½Ð¤·Â³¤±¤Þ¤¹¡¥‘lt_dlforeachfile’¤ÏºÇ¸å¤Î func¤Î¸Æ¤Ó½Ð¤·¤ÎÊÖ¤êÃͤòÊÖ¤·¤Þ¤¹¡¥

Î㤨¤Ð¡¤ºÇ½é¤Î¥Ù¥¯¥È¥ë(ÇÛÎó)¤Î¥¢¥É¥ì¥¹¤òÊÝ»ý¤·¤Æ¤¤¤ëdata¤ò»ÈÍѤ· ¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Î¡¤½çÈ֤ˤʤäƤ¤¤ëargv¤Î¤è¤¦¤Ê¥Ù¥¯¥È¥ë(ÇÛÎó)¤ò¹½ ÃÛ¤¹¤ë¤¿¤á¤Ë¡¤func¤òÄêµÁ¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡¥

Function: int lt_dlmakeresident (lt_dlhandle handle)

¥â¥¸¥å¡¼¥ë¤ò‘lt_dlclose’¤Ç¤­¤Ê¤¤¤è¤¦¤Ë°õ¤òÉÕ¤±¤Þ¤¹¡¥¥â¥¸¥å¡¼¥ë¤¬ ¥×¥í¥¸¥§¥¯¥È¤ÎÃæ¿´Éô¤Îµ¡Ç½¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¾ì¹ç¡¤ºï½ü¤µ¤ì¤ë¤È¥³¡¼¥É¤¬²õ¤ì ¤ë¤Î¤Ç¡¤¤³¤ì¤ÏÌò¤ËΩ¤Ä¤Ï¤º¤Ç¤¹¡¥À®¸ù¤¹¤ë¤È0¤òÊÖ¤·¤Þ¤¹¡¥

¼Â¹Ô¤·¤Æ¤¤¤ë¥Ð¥¤¥Ê¥ê¤ËÂФ¹¤ëhandle¤ò¼èÆÀ¤¹¤ë¤¿¤á¤Ë ‘lt_dlopen (NULL)’¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¤¤½¤Î¥Ï¥ó¥É¥ë¤Ï¾ïÃ󤷤Ƥ¤¤ë¤è¤¦ ¤Ê°õ¤¬¾ï¤ËÉÕ¤­¡¤¤·¤¿¤¬¤Ã¤Æ¤¦¤Þ¤¯‘lt_dlclose’¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡¥

Function: int lt_dlisresident (lt_dlhandle handle)

ÆÃÄê¤Î¥â¥¸¥å¡¼¥ë¤¬¾ïÃ󤷤Ƥ¤¤ë¤è¤¦¤Ë°õ¤¬ÉÕ¤¤¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´ºº¤·¡¤¤½¤Î ¾ì¹ç¤Ï1¤òÊÖ¤·¡¤¤½¤ì°Ê³°¤Ç¤Ï0¤òÊÖ¤·¤Þ¤¹¡¥¤³¤Î´Ø¿ô¤Î¼Â¹ÔÃæ¤Ë¥¨¥é¡¼¤¬¤¢¤ë ¾ì¹ç¡¤ -1 ¤¬ÊÖ¤µ¤ì¡¤lt_dlerror¤òÍѤ¤¤Æ²ó¼ý¤µ¤ì¤ë¥¨¥é¡¼¥á¥Ã¥»¡¼ ¥¸¤¬ÀßÄꤵ¤ì¤Þ¤¹¡¥

Variable: lt_ptr (*) (size_t size) lt_dlmalloc
Variable: void (*) (lt_ptr ptr) lt_dlfree

¤³¤ì¤é¤ÎÊÑ¿ô¤Ï¡¤¥Ç¥Õ¥©¥ë¥È¤Çmalloc¤Èfree¤ËÀßÄꤵ¤ì¤Þ¤¹¤¬¡¤ ƱÅù¤Îµ¡Ç½¤òÄ󶡤¹¤ë¾¤Î´Ø¿ô¤ËÀßÄê²Äǽ¤Ç¤¹¡¥¤·¤«¤·¡¤ lt_dlpreopen_default¤ä¥Þ¥¯¥íLTDL_SET_PRELOADED_SYMBOLS°Ê ³°¤Î¤¢¤é¤æ¤ëlibltdl´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¸å¤Ë¡¤¤½¤ÎÃͤòÊÔ½¸¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤» ¤ó¡¥


Next: , Up: Using libltdl   [Contents][Index]