麒麟系统国产化编译问题

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}

然后重新编译。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值