目次 - API(機能別) - 共有オブジェクト読込と関数検索 - SDL_LoadFunction

SDL_LoadFunction

共有オブジェクトから名前で関数のアドレスを検索しそれを戻す

構文

void* SDL_LoadFunction(void* handle, const char* name)

引数

handleSDL_LoadObject()が戻した共有オブジェクト
name検索する関数の名前

戻り値

関数へのポインタを戻す. 失敗のときNULLを戻す. SDL_GetError()で詳細を知ることができる.

サンプルコード

#include "SDL_loadso.h"

// 変数を宣言する
void* myHandle = NULL;
char* myFunctionName = "myFancyFunction";
void (*myFancyFunction)(int anInt);

// mylib.soを動的に読み込む
myHandle = SDL_LoadObject("mylib.so");

// mylib.soからエクスポートされた関数を読み込む
// エクスポートされた関数のプロトタイプは次のようであるとする
// void myFancyFunction(int anInt);
myFancyFunction = (void (*)(int))SDL_LoadFunction(myHandle, myFunctionName);

// myFancyFunctionに適当な値を渡す
if (myFancyFunction != NULL) {
    myFancyFunction(15);
} else {
    // ここでエラー処理を行う
}

詳細

関数へのポインタはSDL_UnloadObject()を呼んだあとは無効となる.

この関数はCの関数の名前のみ検索できる. 他の言語ではコンパイラによって異なる対応で名前修飾(name mangling)される.

必ずライブラリの関数と同じ呼出規約で関数へのポインタを宣言すること. そうしないと, 不明な異常終了が発生する.

関連項目(関数)

SDL_LoadObject
SDL_UnloadObject

SDL Wikiへのリンク

SDL_LoadFunction - SDL Wiki