Я пытаюсь использовать QSerialDevice в Qt, чтобы получить соединение с моим последовательным портом. Я также пробовал QextSerialPort раньше (что работает в Windows Vista, но, к сожалению, не в Windows XP ..), но мне нужен API, который поддерживает XP, Vista и Win7 ... Я создаю библиотеку и настраиваю ее таким образом:Как использовать QSerialDevice в Qt?
CONFIG += dll
CONFIG += debug
Я использовал текущую версию из SVN (0.2.0 - 2010-04-05) и 0.2.0 zip-пакета.
После создания библиотеки я скопировал ее в мой Qt Libdir (C: \ Qt \ 2009.05 \ qt \ lib), а также в C: \ Windows \ system32. Теперь я пытаюсь связать против Lib в моем файле проекта:
LIBS += -lqserialdevice
импортировать нужный заголовок (abstractserial.h) и использовать свой собственный AbstractSerial как это:
// Initialize
this->serialPort->setDeviceName("COM1");
if (!this->serialPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered))
qWarning() << "Error" << this->serialPort->errorString();
// Configure SerialPort
this->serialPort->setBaudRate(AbstractSerial::BaudRate4800);
this->serialPort->setDataBits(AbstractSerial::DataBits8);
this->serialPort->setFlowControl(AbstractSerial::FlowControlOff);
this->serialPort->setParity(AbstractSerial::ParityNone);
this->serialPort->setStopBits(AbstractSerial::StopBits1);
Проблема заключается в том, что если я запустил свое приложение, он немедленно сработает с кодом выхода -1073741515 (приложение не удалось правильно инициализировать). Это та самая ошибка, которую я получил с помощью QextSerialPort в Windows XP (она работала с Windows Vista).
Если я строй LIB QSerialDevice с выпуском конфигурацией, а также моей программой, она сразу выходит из строя, но с выходными кодом -1073741819
Может кто-нибудь помочь мне с этой программой или с другим решением получения последовательного порта для работы с Qt (может быть, другой API или что-то в этом роде?) В противном случае я должен использовать функции Windows API, что означало бы, что моя программа не будет работать с системами UNIX.
Если у вас есть решение проблемы с QextSerialPort под WinXP SP3, они также приветствуются ;)
С наилучшими пожеланиями,
Tobias
коды ошибок Windows, проще в шестнадцатеричном - они битовые. Кроме того, эти коды намного проще для Google. Например, почти все разработчики знают наизусть, что такое '0xC0000005'. – MSalters
-1073741515 - 0xc0000135, STATUS_DLL_NOT_FOUND. Просто убедитесь, что отсутствующая DLL присутствует в папке EXE, каким бы она ни была. Просмотрите журнал событий приложения Windows. –
Извините, но где я могу найти этот файл журнала? – Tobias