1. error:Conversion from ‘long int’ to ‘const QJsonValue’ is ambiguous
解决:long 类型先转为quint64再转为QVariant再赋值
例如:
long length =100000;
jsonRet[“length”]=length;
需要改为:
long length =100000;
quint64 lg =length;
QVariant va = lg;
jsonRet[“length”]=QJsonValue::fromVariant(va);
2. error:cannot bind non-const lvalue reference of type ‘std:string&’ {aka ‘std::_cxx11::basic_string&’} to an rvalue of type ‘TSString’ {aka ‘std::_cxx11::basic_string’}
解决:找到报错的函数定义和声明,去掉参数前的&
例如:
double M3orTon2Litre(std::string & OilUnit, double & volume)
改为:
double M3orTon2Litre(std::string OilUnit, double volume)
3. error:no matching function for call to ‘max(int,double)’
解决:找不到max函数,可以在头文件中定义宏。
#define max(a,b) (((a)>(b))?(a):(b))
min函数同理。
4. error:ambiguous overload for ‘operator=‘ (operand types are ‘std:string’ {aka ‘std::_cxx11::basic_string’ } and ‘QByteArray’)
解决:将需要赋的值用std::string包起来。
例如:
std::string orderInfo = QJsonDocument(jsonRet).toJson();
改为:
std::string orderInfo = std::string(QJsonDocument(jsonRet).toJson());
5. error:‘sqrtf’ is not a member of ‘std’; did you mean ‘sqrt’?
解决:使用(float)sqrt(X)代替sqrtf
6. 输出错误日志:error:lookup error: undefined symbol: _ZN21BaseWidget16staticMetaObjectE(fatal)
解决:编译时没有包含对应lib库,找到报错的文件,在其CMakeLists.txt文件中添加缺失的库:
BasePlugin${GENERATE_LIB_SUFFIX}
然后重新编译。