03/07/04 23:29
実行時に必要になるオブジェクトやリソースがリンクされないんだけど…。
public static void main(String[] args) {
Calendar.getInstance();
}
これがエラーになるんだよね。どのカレンダー実装を使うかは
実行時に判断されるため、リソースオブジェクトがリンク時には
リンクされないのだ。
ar x libgcj.a Calendar.o
として、リソースオブジェクトを取り出して、
gcj --main=Hello -o Hello.exe Hello.java Calendar.o
のように直接リソースオブジェクトを指定すれば、正しくリンクされて
きちんと動作する。他にも Input_SJIS.o や Output_SJIS.o などの
文字コードコンバート系 オブジェクトもリンクされないので、
URLリンク(www.thisiscool.com) にある
バイナリでは、デフォルトでコンソールに日本語を表示することができない。
Input_SJIS.o などをリンクするためには、他から静的に参照されてればいいので、
IOConverter.java などで new Input_SJIS(); などとしておけば良い。
そうすれば、リンク時に Input_SJIS.o が必要だということが分かるから、
ちゃんと Input_SJIS.o がリンクされて日本語が通る。
そのうち、構成しなおした libgcj.a でもアップするか…。