Dinamikus modulbetöltés

rövid leírása

Ezek a funkciók olyan hordozható eljárás dinamikus terhelése objektum fájlok (más néven „plug-in”). A jelenlegi implementáció minden olyan rendszer, amely biztosítja a végrehajtás dlopen () (pl Linux / Sun), valamint a HP-UX mechanizmusán keresztül shl_load () és a Windows keresztül DLL-ek.

Programot kell használni ezeket a funkciókat kell kapcsolni a kimeneti könyvtárakat (output) alkalmazásával pkg-config --libs gmodule-2.0 csapat.

Ahhoz, hogy használni őket, először meg kell határoznia, ha a dinamikus terhelés támogatja a platform keresztül használható g_module_supported () hívást. Ha kezeli, akkor nyissa meg az új modulok segítségével g_module_open (). keresse moduláris azonosítók (pl függvény nevek) alkalmazásával g_module_symbol (). majd zárás modulok keresztül g_module_close (). g_module_name () visszatér az aktuálisan nyitott egység nevét.

Ha bármelyik fentebb leírt funkciókat nem sikerül, a hiba leírását megtalálható alkalmazásával g_module_error ().

GModule funkció valósítja referencia számlálást nyitott modulok és támogatja a megszakítás kezelési funkciókat a modul kerül meghívásra, ha a modul be- és kirakodása (lásd GModuleCheckInit és GModuleUnload).

Ha a modul bemutatja a statikus adatok közös alrendszerek a jelenlegi programban, például a g_quark_from_static_string kihívás ( „az én-modul-cucc”). meg kell bizonyosodni arról, hogy soha levenni g_module_make_resident () hívást.

12. példa egy funkció meghatározott egy GModule

g_module_build_path ()

Hordozható módja egy modul fájl nevét. Platform-specifikus előtag és az utótag hozzá a fájl nevét, ha szükséges, és az eredmény bekerül a könyvtárba a megfelelő határoló karakter.

Paraméter könyvtárat kell meghatározni, ahol a könyvtárat, ahol a modul megtalálható. Ez lehet NULL vagy üres sztring jelzi, hogy a modul a szabványos platform-specifikus könyvtár, bár ez nem ajánlott, mivel a hibás modul található.

Például a hívás g_module_build_path () a Linux rendszer paraméter értékét könyvtár / lib és module_name paraméter értékével egyenlő „MyLibrary” vissza /lib/libmylibrary.so. A Windows használja \ Windows könyvtárban, mint a paraméter értékét adja vissza \ Windows \ mylibrary.dll.

a könyvtárat, ahol a modult. Lehet NULL vagy üres sztring, jelezve, hogy egy szabványos platform-specifikus könyvtár, bár ez nem ajánlott.

abszolút útját a modul, beleértve a standard könyvtár előtag és az utótag. Meg kell szabadítani, ha már nincs rájuk szükség.

g_module_open ()

Megnyitja modult. Ha a modul már nyitva van, ez növeli a kapcsolatok száma.

Először g_module_open () próbál megnyitni fájlnév modulként. Ha ez nem sikerül, és fájlnév „.la” utótag (és egy archív libtool), megpróbálja megnyitni a megfelelő modult. Ha nem sikerül, és nem rendelkezik a megfelelő modul utótag a platform (G_MODULE_SUFFIX), ez utótag kerül a felelős, és a megfelelő modul megnyitásakor. Ha ez nem sikerül, és file_name nem rendelkezik az utótag „.la”, ez az utótag van behelyezve és g_module_open () nyitni próbálja a megfelelő modul. Ha ez nem sikerül, akkor a visszaadott érték NULL.

A fájl neve tartalmazza a modul, vagy NULL, hogy GModule be közvetlenül a fő program.