EL_GetGlobalAdr

構文

#include <twl/el.h>

typedef u32 ELDlld;

void* EL_GetGlobalAdr( ELDlld my_dlld, const char* ent_name );

引数

my_dlld シンボルの検索対象とする動的モジュール
ent_name アドレスを得たいシンボルの名前

返り値

指定した動的モジュール内に指定したシンボルが見つかった場合は、そのシンボルのアドレスを返します。
見つからなかった場合には、0 を返します。

説明

指定動的モジュールから指定文字列に該当するシンボルのアドレスを返します。
(引数 my_dlld に 0 を指定した場合は、リンクを試みた全ての動的モジュールを検索対象にします)

静的モジュール側から動的モジュールの関数を呼び出したい場合などは、本関数で対象の関数のアドレスを得た後に、 関数ポインタとして関数を呼び出すことになります。

静的モジュール側から動的モジュールのシンボルを参照する際にはポインタが使われ、コンパイル時に型チェックが 行われませんので、動的モジュールのヘッダファイルを確認し、本関数の返り値が正しい型のポインタに代入される ようにするなど、正しい型を確認できるようにしてください。


(例)動的モジュールのu16型変数を参照する。

u16* dll_data_p;
dll_data_p = (u16*)EL_GetGlobalAdr( dlld, "dll_data");
OS_TPrintf( "dll_data:%d\n", *dll_data_p);



(例)動的モジュールの関数を呼び出す。

typedef void (*dllfunc)( u16 a)
dllfunc dll_func1;
dll_func1 = (dllfunc)EL_GetGlobalAdr( dlld, "dll_func1");
dll_func1( 0x1234);

参照

EL_AddStaticSym

履歴

2008/07/11 ELDlldを追加
2007/08/21 初版