查看完整版本: [-- qt4下输入法的问题 --]

QTCN开发网 -> Qt嵌入式开发 -> qt4下输入法的问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

haoyunp 2011-08-13 17:57

qt4下输入法的问题

我用的是天嵌的2440开发板,现在运行qt4.5的系统,输入法移植总不成功。下载了两个输入法,大家有时间的话帮我看看怎样移植输入法。
第一个输入法.syszuxpinyin输入法 [attachment=6368][attachment=6370]设置好环境变量后,可以编译出4个库文件,但是按照移植的方法再工程中加入库文件则弹不出键盘界面,好像是找不到库文件。
编译syszuxpinyin-demo工程,则提示找不到-lsyszuxpinyin,不知道怎么解决,
安装方法提示:
一.首先是库libsyszuxpinyin.so的移植

  1. 将 SYSZUXpinyin.tar.bz2 拷到/opt/进行解压 然后 cd SYSZUXpinyin

  2. /home/linux ....../qmake -project // /home/linux ....../qmake 为QTE交叉编译后生成的bin目录下的可执行文件
  修改 .pro文件
  TEMPLATE = lib
  在.pro中添加
  RESOURCES += syszuxpinyin.qrc
  3. /home/linux ....../qmake  
  4. make  

把生成的
libSYSZUXpinyin.so  
libSYSZUXpinyin.so.1  
libSYSZUXpinyin.so.1.0  
libSYSZUXpinyin.so.1.0.0
库文件拷到 /home/linux..../lib 下面
  
如要在板子上运行,则需要把以上库文件拷到板子上相应的库里面去 (如 /qt4/lib/下)
  

二.然后是把输入法编译到Qt中  
  将源码包中的syszuxim.h和syszuxpinyin.h头文件和syszuxpinyin.ui面板放置到你Qt程序的源代码路径下
1. /home/linux ....../qmake -project
将你的Qt程序的.pro文件中添加 QMAKE_LIBS += -lsyszuxpinyin  
在主界面源文件 .cpp中加入
  #include "syszuxpinyin.h"
  #include "syszuxim.h"
  并在需要启动输入法的函数里面加
QWSInputMethod* im = new SyszuxIM;
QWSServer::setCurrentInputMethod(im);

2. /home/linux ....../qmake
3. make


第二个输入法:MurphyPinyin0.05,[attachment=6369]安装方法再附件中
这个输入法编译就有误,提示找不到omp.h文件,在系统中搜索也找不到这个文件。

下载的这两个输入法应该能移植成功,只是我刚开始学习qt及linux系统,好多东西不清楚,所以请大家帮忙试试。已经弄了两周了,没出来结果。谢谢大家了。

wxj120bw 2011-08-13 22:16
syszuxpinyin1.0.tar.gz 编译生成有个库文件 应该是syszuxpinyin.so文件或者是其他文件 这个库文件应该是syszuxpinyin-demo.tar.gz 编译所需的 所以有提示-lsyszuxpinyin,你需要将syszuxpinyin1.0.tar.gz放到系统目录,如/usr/lib。
移到板上的键盘程序应该syszuxpinyin-demo.tar.gz 编译生成的吧 如果弹出来 应该是库文件没找到 你将库文件放到系统库路径下/usr/lib 尝试下

omp.h没有印象。看下编译MurphyPinyin-0.05.rar 需要编译器的版本。或许是版本对不上导致的。

haoyunp 2011-08-16 13:10
我的编译器的库文件文件夹是/opt/EmbedSky/qt-4.5/__install/arm/lib,我把编译的库文件放进去了
不明白为什么“你需要将syszuxpinyin1.0.tar.gz放到系统目录,如/usr/lib。”,不过我试了试也是不行。
编译的时候提示:

Running build steps for project syszuxpinyin...
Configuration unchanged, skipping QMake step.
Starting: /usr/bin/make -w
make: Entering directory `/opt/hp/SYSZUXpinyin-demo'
arm-linux-g++ -Wl,-O1 -Wl,-rpath,/opt/EmbedSky/qt-4.5/__install/arm/lib -o syszuxpinyin main.o line.o moc_syszuxpinyin.o moc_line.o moc_syszuxim.o qrc_syszuxpinyin.o -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lsyszuxpinyin -lQtWebKit -lQtGui -L/tslib-1.4/lib -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lts -lQtNetwork -lQtCore -lm -lrt -ldl -lpthread
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lsyszuxpinyin
collect2: ld returned 1 exit status
make: Leaving directory `/opt/hp/SYSZUXpinyin-demo'
make: *** [syszuxpinyin] 错误 1
Exited with code 2.
Error while building project syszuxpinyin
When executing build step 'Make'


wxj120bw 2011-08-16 22:34
编译这个源码syszuxpinyin1.0.tar.gz 时,你生成了那些文件?

351339482 2011-08-24 16:33
引用第2楼haoyunp于2011-08-16 13:10发表的  :
我的编译器的库文件文件夹是/opt/EmbedSky/qt-4.5/__install/arm/lib,我把编译的库文件放进去了
不明白为什么“你需要将syszuxpinyin1.0.tar.gz放到系统目录,如/usr/lib。”,不过我试了试也是不行。
编译的时候提示:
Running build steps for project syszuxpinyin...
.......

我也遇到同样的问题了 也是出现 cannot find -lsyszuxpinyin 请问解决了吗?

351339482 2011-08-24 16:35
引用第3楼wxj120bw于2011-08-16 22:34发表的 回 2楼(haoyunp) 的帖子 :
编译这个源码syszuxpinyin1.0.tar.gz 时,你生成了那些文件?

我编译生成了4个库文件,libSYSzuxpinyin.so,,libSYSzuxpinyin.so.1  libSYSzuxpinyin.so.1.0  libSYSzuxpinyin.so.1.0.0

haoyunp 2011-08-24 16:58
对,我也是编译出了这四个库文件http://civilnet.cn/syszux/syszuxpinyin/,这是他们的网站

wxj120bw 2011-08-25 00:10
linux下如果有程序需要动态库(so;so.1;so.1.0等等),可以借助工具libtool(也可能不是这个命令ldd,记不清楚 )查找该程序所需的动态库, 所以将查找的动态库放到/usr/lib或者直接放到生成可执行文件的路径下,再尝试下,看能不能行。

haoyunp 2011-08-25 11:29
我更改为:QMAKE_LIBS +=-L/opt/EmbedSky/qt-4.5/__install/arm/lib -lsyszuxpinyin
现在提示:
arm-linux-g++ -Wl,-O1 -Wl,-rpath,/opt/EmbedSky/qt-4.5/__install/arm/lib -o SYSZUXpinyin-demo main.o line.o moc_syszuxpinyin.o moc_line.o moc_syszuxim.o qrc_syszuxpinyin.o    -L/opt/EmbedSky/qt-4.5/__install/arm//lib -L/opt/EmbedSky/qt-4.5/__install/arm/lib -lsyszuxpinyin -lQtWebKit -lQtGui -L/tslib-1.4/lib -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lts -lQtNetwork -lQtCore -lm -lrt -ldl -lpthread
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lQtWebKit
collect2: ld returned 1 exit status
make: *** [SYSZUXpinyin-demo] 错误9zpM7/4
天嵌生成的qt-4.5/__install/arm下没有QtWebKit,我把qt-embedded-linux-opensource-src-4.5.0文件夹下的QtWebKit拷贝过去编译的,lib下没有webkit的库文件

wxj120bw 2011-08-25 23:59
你qt-embedded-linux-opensource-src-4.5.0有没有编译说明 或者configure --help看下如何选择webkit的编译

haoyunp 2011-08-26 11:34
谢谢wxj120bw的一直关心,SYSZUXpinyin-demo终于编译过去,并且可以运行了。qt-embedded-linux-opensource-src-4.5.0中确实没有编译webkit,更改配置后就OK了。     

haoyunp 2011-08-26 11:35
郁闷了好长时间了,现在我开始更改我的程序了。再次感谢

haoyunp 2011-08-26 17:24
还是有点问题
syszuxpinyin编码问题
syszuxpinyin的编码应该是GB2312,而我qt4.5的应用程序中用的是UTF-8才能显示中文,要想应用这个输入法是不是应该转换编码呀?
在我的应用程序中:
QTextCodec::setCodecForTr( QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
才能正常显示中文,但是输入法就不能显示中文了。

如果QTextCodec::setCodecForTr( QTextCodec::codecForName("GB2312"));,则输入法可以,程序中不能显示中文。应该怎么解决呢?

wxj120bw 2011-08-26 20:57
你的qt程序有翻译过后的文件吗(qm文件) 将文件转换成gb2312(gbk)编码尝试下 在QTextCodec::setCodecForTr( QTextCodec::codecForName("GB2312"));这种情况下

wangrunmin 2012-03-26 20:32
请问你这个汉字不显示的问题解决了么

yanzi1225627 2012-08-07 19:20
有在弄这个问题的么??指点一下我把,我编译的时候出现这个问题:
widget.o: In function `Widget::on_inputButton_clicked()':
widget.cpp:(.text+0x2124): undefined reference to `SyszuxIM::SyszuxIM()'
moc_syszuxim.o: In function `SyszuxIM::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
moc_syszuxim.cpp:(.text+0xa0): undefined reference to `SyszuxIM::confirmString(QString)'
moc_syszuxim.o:(.rodata+0x5c): undefined reference to `SyszuxIM::~SyszuxIM()'
moc_syszuxim.o:(.rodata+0x60): undefined reference to `SyszuxIM::~SyszuxIM()'
moc_syszuxim.o:(.rodata+0x8c): undefined reference to `SyszuxIM::updateHandler(int)'
moc_syszuxpinyin.o: In function `SyszuxPinyin::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
moc_syszuxpinyin.cpp:(.text+0x128): undefined reference to `SyszuxPinyin::buttonClickResponse(int)'
moc_syszuxpinyin.o:(.rodata+0x74): undefined reference to `SyszuxPinyin::~SyszuxPinyin()'
moc_syszuxpinyin.o:(.rodata+0x78): undefined reference to `SyszuxPinyin::~SyszuxPinyin()'
moc_syszuxpinyin.o:(.rodata+0x154): undefined reference to `non-virtual thunk to SyszuxPinyin::~SyszuxPinyin()'
moc_syszuxpinyin.o:(.rodata+0x158): undefined reference to `non-virtual thunk to SyszuxPinyin::~SyszuxPinyin()'
collect2: ld returned 1 exit status
make: *** [Esto-server] 错误 1

aifei7320 2014-11-14 15:13
帖子很好,怎么就沉了呢!?Qt人气不旺啊!

qqliukk 2016-09-19 15:29
有独立输入法程序吗?安装后直接在应用程序中可以输入文字那种。求购!TEL:62964385-8155

dubuzherui 2016-11-30 16:30
先收藏,正准备搞一个输入法了。

shf1986 2017-01-10 14:41
这个在qt4上用没有问题,qt5上用不了,所以在qt5上得自己写一个......

林维渊 2018-08-24 13:32
haoyunp:谢谢wxj120bw的一直关心,SYSZUXpinyin-demo终于编译过去,并且可以运行了。qt-embedded-linux-opensource-src-4.5.0中确实没有编译webkit,更改配置后就OK了。 [表情]  [表情]  [表情]  (2011-08-26 11:34) 

如何更改配置编译webkit?


查看完整版本: [-- qt4下输入法的问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled