サポート掲示板に丁寧に説明書いたらスパム扱いされたでござる……
どういうことなの……
http://forums.mozillazine.jp/viewforum.php?f=26
ぐぬぬぬ
以下全文。分かる人がいたら教えてください
はじめまして。
C++で書かれたXPCOM componentを作成しようとして色々はまっています。
そもそもadd-on SDKやJavaScript + XPCOMではなくC++である理由は、
やや込み入ったCやC++実装の他のライブラリをJavaScriptの拡張から使うためのラッパーが欲しく、
メンテナンス等の都合上、それ自体はJavaScript上のXPCOMで書きたくないためです。
環境は Ubuntu 12.04 LTS 64bits でFirefox は19.0 ベースのCanonicalによる変更が入ったものを使っています。19.0相当と考えて良いと思います。
何度もFirefox本家においてインターフェースの変更があったようで、過去の記事 (2010年くらいのものを含む) に掲載されている方法だと
色々とうまくいきません。
現在は、こちらの方法をベースにして、おかしいと思われる部分を直しつつコンパイルが通るところまで行きました
http://firefox.geckodev.org/index.php?XPCOM%E3%81%AE%E4%BD%9C%E6%88%90#ic7718d4
上記でおかしいところとしては、例えば以下のようなところです。
1点目は下記を参考にしています。
http://stackoverflow.com/questions/12698081/how-to-use-xpidl-header-py-typelib-py
3点目は以下を参考にしています。
https://developer.mozilla.org/en-US/docs/XPCOM/XPCOM_changes_in_Gecko_2.0
4点目は以下の情報を元にしています。
https://bugzilla.mozilla.org/show_bug.cgi?id=570488
ここまでで.soのファイルは一応出来、拡張自体は登録出来たのですが、soの作成方法がおかしいのか、
Tools > Web Developer > Error Console から見るWarningにおいて
Timestamp: 03/11/2013 04:33:47 PM
Warning: Cannot load binary components from a jar.
Source File: jar:file:///home/dmiyakawa/.mozilla/firefox/24kp0ad9.default/extensions/xpcom-sample@cozmixng.org.xpi!/chrome.manifest
Line: 5
と出て登録が失敗してしまいます。また、別途XPCOMViewerで登録されているXPCOMの一覧を挙げてもやはり上記の拡張は登録されていませんでした。
https://addons.mozilla.org/en-us/firefox/addon/xpcomviewer/
現在のソースコードは以下にアップロードしてあります。
https://github.com/dmiyakawa/xpcom-test/tree/q20130311
SDKは xulrunner-19.0.2.en-US.linux-x86_64 を利用しています。
Firefoxのソースコードとセットでsoをビルドする方法でも出来るのであれば一向に問題はないのですが、
上記同様過去の資料で行なっている方法があまりうまくいかず、その面でもはまっています。
上記のソースコードの問題点を指摘していただけると助かります。
あるいは、ソースコード上の xpcom/sample/ から libxpcomsample.so を生成する方法だけでも非常に助かります
(普通に make するだけだと .o のファイルしか作られなくてこれまた困っています)
よろしくおねがいします。
http://forums.mozillazine.jp/viewforum.php?f=26
ぐぬぬぬ
以下全文。分かる人がいたら教えてください
はじめまして。
C++で書かれたXPCOM componentを作成しようとして色々はまっています。
そもそもadd-on SDKやJavaScript + XPCOMではなくC++である理由は、
やや込み入ったCやC++実装の他のライブラリをJavaScriptの拡張から使うためのラッパーが欲しく、
メンテナンス等の都合上、それ自体はJavaScript上のXPCOMで書きたくないためです。
環境は Ubuntu 12.04 LTS 64bits でFirefox は19.0 ベースのCanonicalによる変更が入ったものを使っています。19.0相当と考えて良いと思います。
何度もFirefox本家においてインターフェースの変更があったようで、過去の記事 (2010年くらいのものを含む) に掲載されている方法だと
色々とうまくいきません。
現在は、こちらの方法をベースにして、おかしいと思われる部分を直しつつコンパイルが通るところまで行きました
http://firefox.geckodev.org/index.php?XPCOM%E3%81%AE%E4%BD%9C%E6%88%90#ic7718d4
上記でおかしいところとしては、例えば以下のようなところです。
- xpidl コマンドはすでにないため、代替である header.pyやtypelib.py を用いている
- モジュールをFirefoxに認識させるためのコード部位 myCalcModule.cpp で使われている
- コードにおいて現在コンパイルが通らないため、Firefoxソース本体のxpcom/sample から借用したコードを混ぜて使っている
- binary-component の指定が明示的に必要になっているようなのでそれも追加している
- componentが登録されているかを確認するために使われている xpti.dat は現在削除されているのでその部分は無視
1点目は下記を参考にしています。
http://stackoverflow.com/questions/12698081/how-to-use-xpidl-header-py-typelib-py
3点目は以下を参考にしています。
https://developer.mozilla.org/en-US/docs/XPCOM/XPCOM_changes_in_Gecko_2.0
4点目は以下の情報を元にしています。
https://bugzilla.mozilla.org/show_bug.cgi?id=570488
ここまでで.soのファイルは一応出来、拡張自体は登録出来たのですが、soの作成方法がおかしいのか、
Tools > Web Developer > Error Console から見るWarningにおいて
Timestamp: 03/11/2013 04:33:47 PM
Warning: Cannot load binary components from a jar.
Source File: jar:file:///home/dmiyakawa/.mozilla/firefox/24kp0ad9.default/extensions/xpcom-sample@cozmixng.org.xpi!/chrome.manifest
Line: 5
と出て登録が失敗してしまいます。また、別途XPCOMViewerで登録されているXPCOMの一覧を挙げてもやはり上記の拡張は登録されていませんでした。
https://addons.mozilla.org/en-us/firefox/addon/xpcomviewer/
現在のソースコードは以下にアップロードしてあります。
https://github.com/dmiyakawa/xpcom-test/tree/q20130311
SDKは xulrunner-19.0.2.en-US.linux-x86_64 を利用しています。
Firefoxのソースコードとセットでsoをビルドする方法でも出来るのであれば一向に問題はないのですが、
上記同様過去の資料で行なっている方法があまりうまくいかず、その面でもはまっています。
上記のソースコードの問題点を指摘していただけると助かります。
あるいは、ソースコード上の xpcom/sample/ から libxpcomsample.so を生成する方法だけでも非常に助かります
(普通に make するだけだと .o のファイルしか作られなくてこれまた困っています)
よろしくおねがいします。