OSのiconv関数が呼び出されているためです。
標準コード変換のiconv関数を使用する場合、環境変数 "LD_LIBRARY_PATH"に "/etc/opt/FSUNiconv/lib"を設定してください。
また、libicv.soまたはlibricv.soを libc.soより先にリンクされるようにする必要があります。コンパイル時に-licvオプションまたは-lricvオプションを -lcオプションの前に指定してください。 上位プログラムがある場合、上位プログラムに対してもリンクする必要があります。リンクすることができない場合はライブラリをdlopen()で動的にライブラリを呼び出す必要があります。
メインプログラム (親 )にも標準コード変換ライブラリのリンクが必要になります。呼び出しの段階が多くなった場合でも同様で、一番上位のプログラムと、標準コード変換ライブラリを呼び出すプログラムにリンクが必要になります。
なお、Javaから標準コード変換関数を呼び出す場合は、必ずdlopen()で動的にライブラリを呼び出す必要があります。
標準コード変換ユーティリティでは、「未定義文字の取扱い」の指定にしたがって、領域外の文字を代替文字に変換することができます。
関数で変換を行う際に同様の処理を行いたい場合には、エラーの復帰処理で代替文字に置き換える処理を実装してください。
文字コード変換表の処理を行うiconv_open関数を何度も呼び出している可能性があります。
iconv_open関数を1回だけ呼び出すようにし、iconv関数のみを複数回呼び出すようにしてください。
iconv関数の入力パラメタのinleftsize、outleftsizeの型はsize_t *型ですが、int *型を指定している可能性があります。
64ビット版では、size_t型は8バイト、int型は4バイトであるため、不当な値を指して、エラーが発生している可能性があります。
size_t *型を指定してください。
キーワードに「UCS2」を指定した場合に、APIでは「UCS2BE」となります。
参考
なお、コマンドの場合には、環境によってLEになるかBEになるかが決まります。
変換元がUCS2の場合
“Charset Manager 使用手引書 標準コード変換機能編”の“付録I コード系キーワード値の一覧”の注18
変換先がUCS2の場合
“Charset Manager 使用手引書 標準コード変換機能編”の“付録I コード系キーワード値の一覧”の注12
APIで「UCS2LE」に変換したい場合には、キーワード値に「UCS2LE」を指定してください。