# EL_Link*Ex

## 構文

  `#include <twl/el.h>`
  `ELDlld EL_LinkEx( ELReadImage readfunc, u32 len, void* buf, u32 buf_size );`
  `ELDlld EL_LinkFileEx( const char* FilePath, void* buf, u32 buf_size );`
  `ELDlld EL_LinkImageEx( void* obj_image, u32 obj_len, void* buf, u32 buf_size );`

## 引数

readfunc | ユーザー独自の READ 関数
FilePath | 登録する動的モジュールのパス名
obj_image | 登録する動的モジュールのメモリ上のアドレス
len / obj_len | 登録する動的モジュールのサイズ
buf | 動的モジュールの登録先となるバッファ
buf_size | 動的モジュールの登録先となるバッファのサイズ

## 返り値

登録に成功した場合、登録した動的モジュールが返ってきます。
登録に失敗した場合は 0 が返ってきます。

## 説明

動的モジュールをELライブラリに登録します。
`EL_LinkEx()` は、ユーザーが指定した READ 関数を使用して、動的モジュールを読み込みます。
`EL_LinkFileEx()` は、登録する動的モジュールを ROM から読み込みます。
`EL_LinkImageEx()` は、メモリに読み込み済みの動的モジュールを使用します。
buf には、`EL_CalcEnoughBufferSizeforLink*()` で求めたサイズ以上の 領域を確保しておく必要があります。
buf_size に指定したサイズで足りなかった場合、リンク処理は途中で失敗します。その後 `EL_GetResultCode()` を呼び出すと `EL_RESULT_NO_MORE_RESOURCE` が返ります。
また、あくまで動的モジュールの登録先のバッファは buf なので、`EL_LinkImageEx()` で動的モジュールの登録作業を行う場合には、 一時的に動的モジュール(ELFファイル)のサイズ分のバッファ(obj_image)が追加で必要となることに注意してください。

注意
デバッガを利用して動的モジュールをデバッグできるのは `EL_LinkFileEx()` を使用した場合のみという点に注意してください。

## 参照

`EL_CalcEnoughBufferSizeforLink*, ELReadImage`

## 履歴

2009/03/16 初版