总结一下毕业设计项目中所遇到的问题

前言

经历了两个多月的时间,终于把毕业设计的要求一步一步地慢慢实现了,中间踩过的坑数不胜数,由此列出了一些遇到的问题还有解决方法。 项目地址:https://github.com/Teoan/garage

在ubuntu中QtCreator无法输入中文

这个和输入法的类型有关,系统中所使用的输入法为Fcitx,然而Qt自带的插件中只支持iBus输入法。 解决:安装fcitx-libs-qt或fcitx-libs-qt5,在系统中找到libfcitxplatforminputcontextplugin.so这个动态库文件,复制到Qt安装目录中的**/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts**子目录下,重新运行程序即可解决。(注意:不同版本的Qt,插件的路径会有所不同)

arm-linux-gcc 成功在Qt编译,但是上传到板子上面运行出现:

.-/bin/sh: ./xxxxx: not found

解决:我用的工具链版本是4.4.3,板子上内核是用5.4.0编译的,版本不匹配,换一个5.4.0的交叉编译工具链或者比5.4.0新就可以了。

关于交叉编译工具链的选择

网上查到的大多数ARM交叉编译工具链版本为4.4.3或者5.4.0,基本上4.4.3版本为32位系统的,5.4.0版本为64位的,然而现在网上资源默认你是用64位版本的系统,所以给的工具链都不会和你说是64位的,然而我用的是32位系统的,为此也遇到了许多坑。网上32位交叉编译工具链的资源比较少,要么得自己去编译,要么要一大堆积分去下载。偶然发现一家和ARM公司合作的 Linaro公司 ,虽然是英文的但是在里面可以找到各种版本个平台的交叉编译工具,再也不用为找ARM交叉编译工具链而烦恼了。 各平台各版本下载地址:https://releases.linaro.org/components/toolchain/binaries/

在ARM板上面使用opencv时,出现:

error while loading shared libraries: /lib/libm.so.6: internal error

解决:出现这个问题应该是arm板上面的openvc库的软连接弄丢了,特别是在windows交叉编译的opencv的库,重新建立软连接就可以了。

关于误删除libc.so.6

删除后发现各种大多数指令都用不了,会出现没有找到动态库的情况。 解决:利用 LD_PRELOAD= 指定运行时的动态库,可以暂时使用常用命令重建软连接。例如:

LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6

使用easypr后识别结果为乱码

“\u00E8\u0093\u009D\u00E7\u0089\u008C:\u00E5\u00B7\u009DA88888”

解决: 原本的字符串处理方式为:

     CPlate cp =plateVec.at(0);
     String ret = cp.getPlateStr();
     QString str =QString::fromLocal8Bit(ret.c_str());
     ui->label->setText(str);

改为:

     CPlate cp =plateVec.at(0);
     cv::String ret = cp.getPlateStr();
     ui->label->setText(ret.c_str());

注意:ret.c_str()实现可以从cv::String类转换为count char * ,以上做法可以实现在Qt中显示中文,但是如果输出到终端还是会有乱码问题,如果需要终端输出,用cout直接输出String就可以了。