У меня есть довольно простая программа, которая запускается, находит все последовательные порты, подключенные к компьютеру, и печатает их на экране графического интерфейса. Прямо сейчас этот код отлично работает при запуске внутри Qt Creator, но как только я попытаюсь взять исполняемый файл и поместить его в DLL для запуска в качестве автономной программы, я рушился. Я запускаю Qt 5.3 с MSVC2013, 32 бит. Компьютер работает под управлением Windows 7 32bit.Ошибка QSerialPort при запуске за пределами среды разработки
вот пример кода, который я бегу:
void ApplicationWindow::findComPorts(){
qDebug() << "find com ports selected";
QString comText;
QString messageText = "locating com ports";
int i = 0;
comText = "Locating Com Ports:";
QMessageBox msg;
msg.setText(messageText);
msg.exec();
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
i++;
messageText = "locating com port " + QString::number(i);
msg.setText(messageText);
msg.exec();
comText = comText + "\nName: ";
comText = comText + info.portName();
comText = comText + "\nDescription: ";
comText = comText + info.description;
comText = comText + "\nManufacturer: ";
comText = comText + info.manufacturer();
comText = comText + "\n";
messageText = "Com port " + QString::number(i);
messageText = messageText + " located";
msg.setText(messageText);
msg.exec();
}
messageText = "All com ports located";
msg.setText(messageText);
msg.exec();
locatedComPorts->setText(comText); //locatedComPorts is type QLabel
//and is declared in the header and is a label on the main GUI box
}
При работе внутри отладчика, выше линии имеет следующий вывод:
внутри отладчика:
find com ports selected
popups (в настоящее время один COM-порт подключен к компьютеру):
locating com ports
locating com port 1
Com port 1 located
All com ports located
, когда программа работает independantly, я получаю следующие всплывающие окна:
locating com ports
locating com port 1
Com port 1 located
, на которой указывают сбои программы на рабочем столе.
Текущие DLL файлы в комплекте с программой, включают:
icudt51.dll, icuin51.dll, icuuc51.dll, libEGL.dll, libGLESv2.dll, msvcp120.dll, msvcr120.dll, Qt5Core.dll, Qt5Gui. длл, Qt5SerialPort.dll и Qt5Widgets.dll
дополнительно, есть подпапка под названием «платформа», которая содержит qwindows.dll
Я не думаю, что есть какой-либо DLL файлов отсутствуют, что может быть причиной этой проблемы , и я не уверен, что еще может быть причиной этого. Единственный код, который я изменил с тех пор, как я столкнулся с этой проблемой, - это добавить окно сообщения, чтобы я мог определить, где программа сбой, когда не используется отладчик, поэтому он сбой перед добавлением qmessagebox. Кто-нибудь знает, что может быть причиной этой конкретной проблемы?