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

# SDL_LoadFunction

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

## 構文

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

## 引数

handle | SDL_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