源代码我上传到了百度云
http://pan.baidu.com/s/1bnq5lJT
QSerialPortInfo 有2个静态方法,
QSerialPortInfo::standardBaudRates();获取可用波特率
QSerialPortInfo::availablePorts();获取可用串口
情景1,我在 按钮onclick 里面运行
QSerialPortInfo::standardBaudRates();
进入QT安装目录,运行
cd Qt5.3.2/5.3/clang_64/bin
./macdeployqt myApp.app -dmg
打开dmg后,点击onclick,可以获取可用波特率
情景2,我在onclick 里面运行一句代码
QSerialPortInfo::availablePorts();
进入QT安装目录,运行
cd Qt5.3.2/5.3/clang_64/bin
./macdeployqt myApp.app -dmg
打开dmg后,点击onclick,程序直接退出
为什么同一个类, 调用不同的方法, macdeployqt打包后,
获取 可用串口 无法运行,获取 波特率 可以运行呢?
如果是 打包后,类库没加载进去,也说不通啊。
我编译了QT 的QSerialPort 示例代码。在QT CReatetor里面可以运行,打包后,也无法运行。
是不是
QSerialPortInfo::availablePorts();在运行期间调用了其他的 未知类库。 现在不知如何解决。请求帮助。
#include"testqtdeploy.h"
#include"ui_testqtdeploy.h"
#include<QtCore>
#include<QtSerialPort>
TestQtDeploy::TestQtDeploy(QWidget*parent):
QMainWindow(parent),
ui(newUi::TestQtDeploy)
{
ui->setupUi(this);
}
TestQtDeploy::~TestQtDeploy()
{
deleteui;
}
voidTestQtDeploy::on_pushButton_clicked()
{
//1 下面代码 打包后可以运行
QList<qint32>list2=QSerialPortInfo::standardBaudRates();
for(inti=0;i<list2.count();i++){
ui->Msg->appendHtml(QString("%1<br/>").arg(list2[i]));
}
//2 下面代码 打包后 无法运行
QList<QSerialPortInfo>list=QSerialPortInfo::availablePorts();
for(inti=0;i<list.count();i++){
ui->Msg->appendHtml(list[i].portName()+":"+list[i].description());
}
}
voidTestQtDeploy::on_BtnClear_clicked()
{
ui->Msg->clear();
}
此问题,是QT 自己的bug. 在5.4.0版本得到了解决。 此问题,整了三周。 最终知道是框架级别的bug.
你最后怎么解决的,我也遇到这个问题了