目次 - SDL 3.0 API(機能別) - 共有オブジェクト読込と関数検索
共有オブジェクト読込と関数検索
概要
システムに依存したライブラリの読み込みルーチン群.
共有オブジェクトとは, 実行中にプログラムがロードするコードである.
これは, Windowsならば"DLL"と呼ばれ, Linuxならば「共有ライブラリ」と呼ばれる.
共有オブジェクトを使うには, そのようなライブラリを作成し, これに対してSDL_LoadObject()を呼ぶ.
読み込んだ後は, オブジェクトにSDL_LoadFunction()を使用して外部に出されたシンボルのアドレスを見つける.
オブジェクトを使い終えたら, SDL_UnloadObject()で破棄する.
いくつか注意する必要がある:
- これらの関数は, C言語の関数名のみ扱える.
他の言語では, 名前修飾や, コンパイラによって異なる固有の対応がある.
- アプリケーションの関数へのポインタと, ライブラリの関数の呼び出し規約が同じであることを確認すること.
これを行わないと実行中に不明なクラッシュが起こるだろう.
- 名前空間の衝突を避けること.
ライブラリからシンボルを読み込むとき, それが既に定義されていてもいなくても, アプリケーションのグローバルな名前空間のシンボルとなる.
もし, シンボルがアプリケーションまたは他の共有ライブラリと衝突すると, 予期しない結果となる.
- ライブラリが破棄されると, SDL_LoadFunction()の戻り値に含まれる全てのポインタは, 後で再読み込みした場合でも無効になる.
以後にポインタを使う可能性がある場合は, ライブラリを破棄してはならない.
特にatexit()でこれらのポインタを使っている場合は, ライブラリを破棄した後にポインタを呼ばないように注意する必要がある.
関数
- SDL_LoadFunction
- SDL_LoadObject
- SDL_UnloadObject
型
- SDL_SharedObject
SDL Wikiへのリンク
SDL3/CategorySharedObject - SDL Wiki