Yukinobu Hamuro
hamur****@adm*****
2004年 10月 18日 (月) 12:47:55 JST
神嶌先生、羽室です。 mssOption.hのOptSELにて、なぜ構造体オブジェクト(OptSEL)を指定していたか不明なのですが、 ここでは構造体の宣言のみすべきところでした。 struct OptSEL { enum OptType type; /*オプションタイプ*/ char *keyWord; /*キーワード文字*/ : } OptSEL; ~~~~~~ そこで上記のオブジェクトOptSELを削除すればコンパイルできました。 ご指摘ありがとうございました。 ただ、agmというコマンドにてxmlReadFile関数を利用しており、「関数プロトタイプ宣言が見つからない」との警告が出ます。 リンクは問題なく、かつ動作もOKです。 MacOSでのlibxml2のバージョンが古いためでしょうか(バージョンの確認方法はわかりませんでした)。 libxml2-2.6以上でしたらparser.hにxmlReadFile関数のプロトタイプ宣言が含まれているのですが。。。 とりあえずは動作上問題なかったので、pre5としてリリースしておきました。 よろしくお願いします。 Toshihiro KAMISHIMA さんは書きました: >羽室先生 > >神嶌です > >お世話になっています > >羽室> MacOSでコンパイルを試みてはいるのですが、一筋縄ではいかないようです。 >羽室> どなたか情報をお持ちであればお知らせ願います。 >羽室> どうもlibtoolに問題がありそうです。 > >一応,やっつけで MacOS X 10.3.5 でコンパイルはとおりました. > >修正点は,lib/include/musashi/mssOption.h の >struct OptSEL { >を >static struct OptSEL { >とすれば,"static と宣言しているが使ってないよ" エラーが多発しますが,コンパ >イルできました. > >MacOSXのdynamic ライブラリですが,Linuxなどはプログラムをロードしたときに, >関数の呼び出しアドレスの割り当てを全部やってしまう(ですよね?)のですが, >Photoshopなどの超重量級アプリだと起動に時間がかかってしまうので,この割り当 >てを実際に関数を呼び出すまで先延しににするらしいです.そのせいで,大域シンボ >ルのコンフリクトにはうるさくなっているらしいです. > >こちらのOptSELはstatic がなくオブジェクトのローカルではなく大域変数として, >複数のオブジェクトで定義されています.そのせいで,同じ名前で定義された大域変 >数がたくさん見えるので,リンクするときどれをリンクすべきかよくわからないと言っ >ているようです. > >抜本的な解決としては .h ファイルは定義だけ書き,ライブラリ内に一つ大域変数と >して struct OptSEL の領域を確保するのが正攻法のような気がします. > >それでは失礼します. > >--- >神嶌 敏弘 >Toshihiro KAMISHIMA >e-mail: toshi****@kamis***** >_______________________________________________ >MUSASHI-users mailing list >MUSAS****@lists***** >http://lists.sourceforge.jp/mailman/listinfo/musashi-users > ---- Yukinobu Hamuro hamur****@adm*****