使用Qt开发程序的小伙伴肯定知道QString,但是有时候需要用别的一些C++开发库,我最近开发rabbitmq-c,结果遇坑,原因就是QString和C++标准string的区别,以此记录一下经过。
1.起因
由于需要使用rabbitmq上传数据到服务器,于是我就愉快上网搜rabbitmq资料,嘿!教程啥的都有有还很详细,感觉so easy,于是愉快的下载源码,编译生成dll拿来用(rabbitmq-c编译dll问题可以参考我上一篇文章),"愉快"地生成dll,愉快的的载入项目,愉快的key代码,愉快的测试,哦豁,完蛋了。
程序报错,declare exchange和queue不成功。
2.查错
各种查询资料(就是百度+问大神),各种奔溃,期间还差点把公司服务器搞挂了(内心在想要不要跑路),还是没有头绪,感觉我不适合C++,趁早回家养猪,奈何家里也没有猪可养,继续奔溃 ,真的是奔
3.终于知道问题在哪
输出框不是提示“命令无效”么,如上图,好吗我就qDebug一下看看到底给amqp_exchange_declare传了些啥,于是就有下图
qDebug() << m_conn << m_iChannel << (char*)_exchange.bytes << (char*)_type.bytes;后面(char*)_exchange.bytes 和(char*)_type.bytes居然为空,啥都没有,突然灵光一闪想起有大神说过,QString要转成string,一定不要懒,一定这样一下std::string str = strExchange.toStdString();然后再根据第三方库的参数需求该咋转再转。
最后改成如下OK了,虽然走了一些弯路,害我java都不能边学干活,不开心。
QT开发RabbitMQ填坑
最新推荐文章于 2024-04-13 13:22:35 发布