QExtSerial - Problem (Anfängerfrage, mal wieder)
-
LukiehLuck
- Beiträge: 6
- Registriert: 10. Februar 2010 17:55
QExtSerial - Problem (Anfängerfrage, mal wieder)
Hi,
ich verwende in meinen Projekt QExtserial, um einen Mikrocontroller über die serielle Schnittstelle anzusprechen.
Hatte eine ältere alpha version der Bibliothek, mit der das nur senden nicht richtig funktioniert hat und habe versucht eine andere version auf gleiche weise einzubinden.
Nun bekomme ich zu jedem aufruf von comport->setzeeinstellung() eine undefined reference-Meldung. Woran kann das liegen habe die .pro datei schon bearbeitet und glaube das das einbinden der dateien so hinhaun sollte. Was gibt es sonst für Ursachen?
mfG
Lukas
ich verwende in meinen Projekt QExtserial, um einen Mikrocontroller über die serielle Schnittstelle anzusprechen.
Hatte eine ältere alpha version der Bibliothek, mit der das nur senden nicht richtig funktioniert hat und habe versucht eine andere version auf gleiche weise einzubinden.
Nun bekomme ich zu jedem aufruf von comport->setzeeinstellung() eine undefined reference-Meldung. Woran kann das liegen habe die .pro datei schon bearbeitet und glaube das das einbinden der dateien so hinhaun sollte. Was gibt es sonst für Ursachen?
mfG
Lukas
-
LukiehLuck
- Beiträge: 6
- Registriert: 10. Februar 2010 17:55
sry, war die letzten tage viel beschäftigt deshalb erst jetzt:
serial.cpp (nur Ausschnitte)
Projektdatei:
Copilermeldungen:
C:\Users\Lukas\Documents\QT\jetztaberwirklich/serial.cpp:8: undefined reference to `_imp___ZN14QextSerialPortC1ENS_9QueryModeE'
...mehr von der sorte....
C:\Users\Lukas\Documents\QT\jetztaberwirklich/serial.cpp:15: undefined reference to `_imp___ZN14QextSerialPort14setFlowControlE8FlowType'
letztenendes:
error: collect2: ld returned 1 exit status
hoffe ihr könnt was damit anfangen.
eventuell hat das ganze auch nichts mit qextserial zutun kp...
serial.cpp (nur Ausschnitte)
Code: Alles auswählen
#include "serial.h"
#include "qtextser\qextserialport.h"
serial::serial()
{
/*Da kommen Felermeldungen:*/
com = new QextSerialPort;
com->setPortName("COM1");
com->setFlowControl(FLOW_OFF);
com->setBaudRate(BAUD38400);
com->setParity(PAR_NONE);
com->setDataBits(DATA_8);
com->setStopBits(STOP_1);
com->setFlowControl(FLOW_OFF);
com->setQueryMode(QextSerialPort::Polling);
QObject::connect(this,SIGNAL(dataRecieved(QString)),this,SLOT(dataIn(QString)));
}
void serial::poll()
{
char readchar;
int readint;
/*hier keine Fehler!*/
if (com->isReadable())
{
readint=com->bytesAvailable();
if(readint>0)
{
com->getChar(&readchar);
emit charRecieved(readchar);
}
}
}
Code: Alles auswählen
#ifndef SERIAL_H
#define SERIAL_H
#define Q_OS_WIN
#include "qtextser\qextserialport.h"
#include <Qt/qstring.h>
#include <QObject>
#include <QThread>
#include <QTimer>
#include <QChar>
#include "QApplication"
#include "QMessageBox"
class serial:public QThread
{
Q_OBJECT
public:
serial();
~serial();
void start_polling();
void stop_polling();
double recieveData();
private:
QextSerialPort *com;
QTimer *timer;
signals:
void charRecieved(char);
void dataRecieved(QString);
void newValue(double);
void dataSent(QString);
private slots:
void charIn(char);
void dataIn(QString);
void poll();
public slots:
void sendString(QString);
};
#endif // SERIAL_H
Code: Alles auswählen
# -------------------------------------------------
# Project created by QtCreator 2010-03-22T10:52:17
# -------------------------------------------------
TARGET = jetztaberwirklich
TEMPLATE = app
SOURCES += main.cpp \
tnttool.cpp \
serial.cpp
HEADERS += tnttool.h \
serial.h \
uart_commands.h
FORMS += tnttool.ui
C:\Users\Lukas\Documents\QT\jetztaberwirklich/serial.cpp:8: undefined reference to `_imp___ZN14QextSerialPortC1ENS_9QueryModeE'
...mehr von der sorte....
C:\Users\Lukas\Documents\QT\jetztaberwirklich/serial.cpp:15: undefined reference to `_imp___ZN14QextSerialPort14setFlowControlE8FlowType'
letztenendes:
hoffe ihr könnt was damit anfangen.
eventuell hat das ganze auch nichts mit qextserial zutun kp...
-
LukiehLuck
- Beiträge: 6
- Registriert: 10. Februar 2010 17:55
das sind alles sehr gute fragen...
1. was meinst du mit öffnen? in dem code oben sieht man die initalisierung und das auslesen mache ich dann mittels polling, ist aber hier nicht von bedeutung, weil mein problem im moment die Compilermeldungen zum initalisieren der schnittstelle sind.
2. ja, wie man im geposteten code sieht: #include "qtextser\qextserialport.h"
3. Das könnte es sein, aber woran sieht man welche version es ist? Habe mir von der Google-code seite der lib einfach einzelne files gezogen, hab also keine ahnung für welche platform die sind.
Gruß
1. was meinst du mit öffnen? in dem code oben sieht man die initalisierung und das auslesen mache ich dann mittels polling, ist aber hier nicht von bedeutung, weil mein problem im moment die Compilermeldungen zum initalisieren der schnittstelle sind.
2. ja, wie man im geposteten code sieht: #include "qtextser\qextserialport.h"
3. Das könnte es sein, aber woran sieht man welche version es ist? Habe mir von der Google-code seite der lib einfach einzelne files gezogen, hab also keine ahnung für welche platform die sind.
Gruß
-
christophr
- Beiträge: 26
- Registriert: 18. Dezember 2008 16:31
- Wohnort: Neuhausen a.d.F.
In Deinem Code wird die Schnittstelle nirgendwo geöffnet. Was bei dir fehlt, ist einLukiehLuck hat geschrieben:1. was meinst du mit öffnen? in dem code oben sieht man die initalisierung und das auslesen mache ich dann mittels polling, ist aber hier nicht von bedeutung, weil mein problem im moment die Compilermeldungen zum initalisieren der schnittstelle sind.
Code: Alles auswählen
com->open();Code: Alles auswählen
com->close();Das ist nur der Header, damit der Compiler die Deklarationen kennt. Die eigentliche Bibliothek hast Du aber nicht eingebunden.LukiehLuck hat geschrieben:2. ja, wie man im geposteten code sieht: #include "qtextser\qextserialport.h"
Code: Alles auswählen
# Projekt.pro
unix:LIBS += -lqextserialport
win32:LIBS += qextserialport.libJe nachdem, wie deine Lib heißt, musst Du den Namen oder den Pfad noch anpassen.
Das Format müsste im Normalfall neben dem Download-Link gestanden haben. Oder hast Du dir das Quellcodepaket runtergeladen? Dann musst Du QExtSerialport erst noch kompilieren.LukiehLuck hat geschrieben:3. Das könnte es sein, aber woran sieht man welche version es ist? Habe mir von der Google-code seite der lib einfach einzelne files gezogen, hab also keine ahnung für welche platform die sind.
-
LukiehLuck
- Beiträge: 6
- Registriert: 10. Februar 2010 17:55
ok, scheinbar habe ich keine ahnung, von dem was ich da mache...
ja, ich habe nur die Quelldateinen gezogen. Wenn ich die .pro datei von qextserial im creator öffne und versuche zu kompilieren geht das jedes mal schief. kommt keine fehlermeldung, der Fortschrittsbalken beibt einfach stehn und wird rot. Was mache ich falsch? hat jemand einen link, wo man die kompilierte lib downloaden kann? hab sowas nur für die älteren verionen gefunden.
ja, ich habe nur die Quelldateinen gezogen. Wenn ich die .pro datei von qextserial im creator öffne und versuche zu kompilieren geht das jedes mal schief. kommt keine fehlermeldung, der Fortschrittsbalken beibt einfach stehn und wird rot. Was mache ich falsch? hat jemand einen link, wo man die kompilierte lib downloaden kann? hab sowas nur für die älteren verionen gefunden.
-
christophr
- Beiträge: 26
- Registriert: 18. Dezember 2008 16:31
- Wohnort: Neuhausen a.d.F.
Um Cabro zu zitieren:
Hellsehen kann hier schließlich keiner.
Solange du den Quellcode von QExtSerialport nicht verändert hast, sollte der unwichtig sein. Die Fehlermeldung des Compilers oder Linkers wird hingegen schon benötigt.Cabo hat geschrieben:poste uns doch mal deinen Quellcode und die genaue Fehlermeldung.
Hellsehen kann hier schließlich keiner.
-
LukiehLuck
- Beiträge: 6
- Registriert: 10. Februar 2010 17:55