初期化済変数はエクスポートできなかっただけという話。 未初期化の変数をエクスポートしてロード時に代入すればOK。 首の皮1枚でつながった。
まあ俺自身は本当にできるかどうかの確認まではしてないけどな。
初期化済変数はエクスポートできなかっただけという話。 未初期化の変数をエクスポートしてロード時に代入すればOK。 首の皮1枚でつながった。
まあ俺自身は本当にできるかどうかの確認まではしてないけどな。
オワタ\(^O^)/
ことの始まりは「俺のライブラリがFirefox4で使えない(意訳・超要約)」なるメールが届いたこと。 どうやらFirefox4からはXPCOMコンポーネントの呼び出し方法が若干変わるようだ。 で、XPCOM changes in Gecko 2.0を調べてみると、どうもDLLから変数のエクスポートをしなければならないらしい。 だが、Delphiは関数のエクスポートはできても変数のエクスポートができない。
はい、終了。
もともと最近は興味が縮小して放置状態だったとはいえ、この変更は致命的な致命傷だ。 何とかしたいところだが現状では前の方法に戻してくれとコミットするしかないな。 こんな理由でBugzilla初投稿なるのか?いやだなあ。
GeckoSDK for DelphiのコードをBagelブラウザによる変更を一部マージするなどして更新した。 Begelの新バージョンはDelphiを使わないようなので、もう更新は俺が頑張るしかないんだよな。
それはそうとBegelがDelphiの採用をやめた理由のひとつに、Mozilla 2でのAPIの大幅変更がある。 C++例外を前提にしたコードになるので、フレームワークのまったく違うDelphiでの対応は確かに難しい。 よほど変態的なコードでラッパを書かないことには新APIでは動かすこともままならないだろう。
で、どんな変態的ラッパを書かねばならないかと、新APIのコードを確認してみたかったのだが、 いかんせんソースツリーにその正体が現れてこない。 Mozilla-centralのコードは旧態依然としたGecko 1.9ベースのコードのままだ。 Mozilla 2のAPIが新しくなるのは2006年には発表されていたので、 かれこれ2年以上もその姿が見えていないことになる。
目標の向かう方向はわかるものの、その行く先がはっきりしないのではどうしようもない。 しばらくはGecko 1.xベースのままでコードは保守されていくだろう。 Gecko 2の開発期間がGecko 1.0より長くなりませんように。
Delphi 2009を買った結果がこれだよ!
若干放置気味になっているGecko SDK for DelphiをDelphi 2009に対応すべく コードの修正を開始した。 しかしこれが大変だ。 Delphi 2009はDelphiで初めてRTLとVCLがすべてUnicode対応にしたため、 というかむしろUnicodeを標準にしたため、 過去のコードの修正が結構大変なことになってきた。 基本ASCII文字列しか扱えないURL周りの処理はともかく、 MBCSでもUnicodeでもどちらでもいけるファイル関係の処理は 今後の設計ポリシーにも関わることなので慎重にいかねばならない。
というかそんなこと考えている暇があるならまずコードの内容を充実させろよ。