4月のカレンダー
 123456
78910111213
14151617181920
21222324252627
282930    
最近の日記
全体の新着
各月の日記
ユーザーRSS
hanyaさんの公開日記
12月20日
00:39
最近、メルセンヌ・ツイスタで擬似乱数を生成する拡張機能 (MTRandom) が LibreOffice 3.4 で動かないという報告をもらいました。
理由がよく分からなかったので調べてみると、C++ で実装された色々な拡張機能が動作しなくなっているようです。

メーリングリストなどで LO の開発者からは大抵、
- 拡張機能のバグ
- OOo が拡張機能の登録方法を変更したから (パッシブが追加された)
などの答えしか返ってきていません。解決できたという報告も無いようです。
拡張機能のバグだとすると、以前のバージョンでも動かないはずです。
拡張機能の登録方法は OOo 3.4 で変更される予定で、LO ではすでに 3.4 で変更されています。変更といっても、拡張機能では以前の登録方法も利用でき、新しいパッシブな方法が追加されたのが実際です。以前の方法が残されているのは、3.3 までの拡張機能を作り替えなくてもいいように、互換性のためです。
試しに、MTRandom を OOo 3.3 と AOO 3.4 (開発版) にインストールしてみると、どちらでも動作します。

LO 3.4 SDK でビルドし直しても動作しませんでした。理由がよく分からなかったので SDK に入っている C++ で書かれた拡張機能を試してみました。
complextoolbarcontrols は動作しましたが、CppComponent は登録で失敗しました。
CppComponent はパッシブ登録に変更されていると見せかけて、元のままというバグがありますが、それを修正しても登録できませんでした。

最終的に MTRandom は LO 3.4 でも動作するようになりました。が、何を変更したのか忘れました。すぐにコレを書くべきでした。
Makefile の diff によると、
- Linux では CC_FLAGS に -fvisibility=hidden を追加
- Linux ではリンク時に -lm を追加
- Linker に渡される中間ファイルの順序を修正
- stl ライブラリへのリンク指定を削除 (LO 3.4 から stl ライブラリが sdk に含まれない
- 登録をパッシブ (のみ) にした。パッシブ登録は 3.4 以降。

どこが原因だったのでしょうか?ついでだったのでパッシブ登録に変更してしまいましたが、アクティブ登録も動くかどうか確かめるべきですねぇ。

SDK の話題が出たのでついでに。Ruby-UNO ブリッジに手を入れたものを Windows 上でビルドできるようにしてみました。が、LO 3.4.4 に対してビルドすると RPC で接続はできるものの、途中で URP bridge が dispose されてしまいます。OOo 3.3.0 に対してビルドすると正しく動作しました。
公開日記トップへ
oooug-jp SNS

●サイドメニュー

  • 公開日記
  • >公開日記はログインしなくても読めます

http://www.ospn.jp/

inetd