QZxing 是对 zxing 的一个封装,用于在 Qt 程序中加入条形码和二维码识别的功能。目前想使用QZXing来实现一个二维码生成器及二维码识别功能。
QZXing 的代码是放到github上。下载地址:http://https://github.com/ftylitak/qzxing/
下载好后直接打开pro文件。
我使用的QTDesigner是5.9.5.
直接编译报错如下:
QREncoder.obj:-1: error: LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class QByteArray __cdecl QString::toUtf8(void)const & " (__imp_?toUtf8@QString@@QEGBA?AVQByteArray@@XZ),该符号在函数 "protected: static void __cdecl zxing::qrcode::Encoder::append8BitBytes(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class zxing::BitArray &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?append8BitBytes@Encoder@qrcode@zxing@@KAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAVBitArray@3@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@5@@Z) 中被引用
搜索toUtf8后发现引用有2个,屏蔽掉QREncoder中的toUtf8后确实编译通过了。但 toUtf8本身只是QString的一个函数,不知道为什么会报错。下面贴出问题代码部分。
后面尝试换了QT5.6.0的版本,直接识别不到编译器,并不可设置。
最终还是使用qt5.9.5,但是在config项目的时候,选择了机器上安装的VS2017,成功编译了,没有错误。之前出错的时候选择的编译器是VS2013!!!(Tips : 注意项目配置中编译器的选择)
祝各位顺利避坑~