2012/2/10 Yamashiro, Jun <yama...@ofug.net>:
> お久しぶりです。山城@OFUG です。

どうもありがとうございます。

> NetBSD 上で Qt4 immodule オプションを有効にすると、Qt4 を使用しているアプリケーションの
> 起動時に、下記のエラーを出して終了します。
>
> $ vlc
> VLC media player 1.1.10 The Luggage (revision exported)
> /usr/pkg/qt4/plugins/inputmethods/libuiminputcontextplugin.so: Undefined PLT 
> symbol "uim_counted_init" (symnum = 720)
>
> uim_counted_init() がリンクされていないために、実行時にエラーとなってしまいます。

了解です。

> libuim-counted-init.la をリンク対象としてこの問題を解決するために、
> 下記のパッチを作成しました。ご確認お願いします。
[...]
> --- qt4/immodule/quiminputcontextplugin.pro.in.orig     2011-09-18 
> 00:16:56.000000000 +0900
> +++ qt4/immodule/quiminputcontextplugin.pro.in  2011-09-18 00:17:24.000000000 
> +0900
> @@ -3,7 +3,7 @@
>  TEMPLATE = lib
>  CONFIG += plugin
>
> -LIBS += @X11_LIBS@ ../../uim/.libs/libuim-counted-init.a
> +LIBS += @X11_LIBS@ ../../uim/libuim-counted-init.la
>
>  # Input
>  HEADERS += @srcdir@/abstractcandidatewindow.h \

うーん。これでコンパイル通るのでしょうか?
Linux 上でそのような変更をすると、
g++ -Wl,-O1 -shared -o libuiminputcontextplugin.so
abstractcandidatewindow.o candidatetablewindow.o candidatewindow.o
caretstateindicator.o plugin.o qhelpermanager.o qtextutil.o
quiminfomanager.o quiminputcontext.o subwindow.o
quiminputcontext_compose.o moc_abstractcandidatewindow.o
moc_candidatetablewindow.o moc_candidatewindow.o
moc_caretstateindicator.o moc_plugin.o moc_qhelpermanager.o
moc_qtextutil.o moc_quiminputcontext.o moc_subwindow.o
-L/home/kato/src/uim/branches/1.7/uim
-L/home/kato/src/uim/branches/1.7/replace
-L/home/kato/src/uim/branches/1.7/replace/.libs
-L/home/kato/src/uim/branches/1.7/uim/.libs -L/usr/lib64 -lreplace
-luim -luim-scm -luim-x-util -lX11 ../../uim/libuim-counted-init.la
-lQt3Support -lQtSql -lQtXml -lQtNetwork -lQtGui -lQtCore -lpthread
-L/home/kato/src/uim/branches/1.7/replace/.libs
-L/home/kato/src/uim/branches/1.7/uim/.libs
../../uim/libuim-counted-init.la: file not recognized: File format not
recognized
となりリンクできなくなります。

> ※ FreeBSD ports の textproc/uim-qt4 でも同様の修正を行っているようです。
> http://www.jp.freebsd.org/cgi/cvsweb.cgi/ports/textproc/uim-qt4/Makefile

このファイルからは、.libs/libuim-counted-init.a から libuim-counted-init.la に
変更しているようには見えませんでしたが、どの点でしょうか?
とりあえず確実に libuim-x-util.la, libuim-counted-init.la, libreplace.la を先に
コンパイルしておくように指定しているようには見えました。

> ただ、このパッチを当てても、私の環境では uim immodule での日本語入力はできません。
> xim immodule に切り替えると、xim 経由での日本語入力は可能です。この問題の原因は
> まだ分かっていません。

Qt4 のテキストウィジェットの右クリックの "Select IM" というメニュには、uim が
リストされていますか? されていないのであれば、まずはプラグインのロードが
なされていないのだと思います。

-- 
Etsushi Kato
ek.k...@gmail.com

-- 
Google Groups "uim-ja" group
uim-ja@googlegroups.com
http://groups.google.com/group/uim-ja/about

メールによる返信