Hallo zusammen,
habe probleme mit QSerialDevice. Ich bekomme die Bibliotheke nicht eingelade. Ich habe mit eine Version von Nokia "qserialdevice-qserialdevice-0.4.0" geladen und auch eine von SVN qserialdevice-0.2.0. Habe bei beiden versucht die die .pro datei zu laden und zu erstellen und hierbei habe ich schon Fehlermeldungen erhalten. Bei der SVN habe ich 6 Build-Probleme, jeweil "call of overloaded 'QString(int)' is ambiguous. Problem war hier die abstractserial.cpp.
Selbst wenn ich dann die libqserialdevice.a erstellt bekomme, wie geht es dann weiter? Die Doku hört da auf.
Vielen Dank!
Malte
QSerialDevice Problem
Hallo,
so, ein bsichen weiter bin ich. habe die Ntddser.h aus dem aus dem Internet gezogen. Jetzt sind nur noch zwei fehlermeldungen da.
Error 1 error C2027: use of undefined type 'SerialDeviceEnumeratorPrivate' c:\Thesis\qserialdevice-qserialdevice-master\qserialdevice-qserialdevice\src\build\moc\moc_serialdeviceenumerator.cpp 77
Error 2 error C2227: left of '->_q_processWatcher' must point to class/struct/union/generic type c:\Thesis\qserialdevice-qserialdevice-master\qserialdevice-qserialdevice\src\build\moc\moc_serialdeviceenumerator.cpp 77
und das hier ist die Methode die er nciht mag:
int SerialDeviceEnumerator::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
switch (_id) {
case 0: hasChanged((*reinterpret_cast< const QStringList(*)>(_a[1]))); break;
case 1: d_func()->_q_processWatcher(); break;
default: ;
}
_id -= 2;
}
return _id;
}
wobei Zeile 77 dies ist:
case 1: d_func()->_q_processWatcher(); break;
aber warum nur?
gruß,
Malte
so, ein bsichen weiter bin ich. habe die Ntddser.h aus dem aus dem Internet gezogen. Jetzt sind nur noch zwei fehlermeldungen da.
Error 1 error C2027: use of undefined type 'SerialDeviceEnumeratorPrivate' c:\Thesis\qserialdevice-qserialdevice-master\qserialdevice-qserialdevice\src\build\moc\moc_serialdeviceenumerator.cpp 77
Error 2 error C2227: left of '->_q_processWatcher' must point to class/struct/union/generic type c:\Thesis\qserialdevice-qserialdevice-master\qserialdevice-qserialdevice\src\build\moc\moc_serialdeviceenumerator.cpp 77
und das hier ist die Methode die er nciht mag:
int SerialDeviceEnumerator::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
switch (_id) {
case 0: hasChanged((*reinterpret_cast< const QStringList(*)>(_a[1]))); break;
case 1: d_func()->_q_processWatcher(); break;
default: ;
}
_id -= 2;
}
return _id;
}
wobei Zeile 77 dies ist:
case 1: d_func()->_q_processWatcher(); break;
aber warum nur?
gruß,
Malte
Hallo.
"Ntddser.h" - eine Header-Datei des Compilers. Zum Beispiel in MinGW von dort standardmäßig. Aber in verschiedenen Versionen von MSVC, kann er sein oder auch nicht. Daher für MSVC in "nativeserialengine_win.cpp" verwendet Makros ersetzen "ntddser.h".
Daher ist jede Bibliothek des Compilers (und MinGW MSVC und) ohne Fehler kompiliert!
Ich verstehe nicht, woher hast du diese Fehler!
Laden Sie die neueste Version und überprüfen:
https://gitorious.org/qserialdevice/qse ... all/master
PS: Entschuldigen schlechte Übersetzung.
----
Grüße, Denis.
"Ntddser.h" - eine Header-Datei des Compilers. Zum Beispiel in MinGW von dort standardmäßig. Aber in verschiedenen Versionen von MSVC, kann er sein oder auch nicht. Daher für MSVC in "nativeserialengine_win.cpp" verwendet Makros ersetzen "ntddser.h".
Daher ist jede Bibliothek des Compilers (und MinGW MSVC und) ohne Fehler kompiliert!
Ich verstehe nicht, woher hast du diese Fehler!
Laden Sie die neueste Version und überprüfen:
https://gitorious.org/qserialdevice/qse ... all/master
PS: Entschuldigen schlechte Übersetzung.
----
Grüße, Denis.
Ja, sehr gut, damit ging es. Danke!
Benutze das QT AddIn für VisualStudio 08. Ist es richtig die .a Datei nun in das Verzeichnis C:\Qt\4.7.2\lib zu kopieren und dann in Visual Studio unter Project/Property/linker/input/additional Dependencies die Datei hinzu zu fügen? Beim QT Creater fügt man den Pfand ja in die .pro datei mit ein, aber sowas gibt es bei VS ja nciht.
gruß,
Malte
Benutze das QT AddIn für VisualStudio 08. Ist es richtig die .a Datei nun in das Verzeichnis C:\Qt\4.7.2\lib zu kopieren und dann in Visual Studio unter Project/Property/linker/input/additional Dependencies die Datei hinzu zu fügen? Beim QT Creater fügt man den Pfand ja in die .pro datei mit ein, aber sowas gibt es bei VS ja nciht.
gruß,
Malte
Ich weiß nicht, ich weiß nicht verwenden MSVC.Benutze das QT AddIn für VisualStudio 08. Ist es richtig die .a Datei nun in das Verzeichnis C:\Qt\4.7.2\lib zu kopieren und dann in Visual Studio unter Project/Property/linker/input/additional Dependencies die Datei hinzu zu fügen?
Um die Bibliothek in Ihrem Projekt verwenden, müssen Sie die Header-Dateien haben: abstractserial.h und / oder serialdeviceenumerator.h sowie eine binäre Datei hinzugefügt: libqserialdevice(d).a(dll).
Sie können diese Dateien zu kopieren, wo sie Sie in das Projekt benötigen. Zum Beispiel, Schlagzeilen in der \include, und die Bibliothek \lib in Ihrem Projekt.
Siehe letzten Beitrag hier:
http://qt-apps.org/content/show.php?content=112039
Grüße, Denis.
Hallo nochmal,
verwende jetzt qextserialport 1.0, daten von der Seriellen Schnittstelle kann ich jetzt lesen. Die readyRead() Funktion funktioniert aber nicht so wie gewünscht. Wollte dies nun mit der qextserialport 1.2 versuchen. Problem ist, dass ich bei der 1.2 Version nicht auf die Methode readData() zugreifen kann, da diese als "protected" in der Win_qextserialport.h deklariert ist. Bei der 1.0 Version war sie noch als "public" deklariert. Meine Serielle Schnittstelle erstelle ich als Instanz von QextSerialPort. Und ich denke dass QextSerialPort von Win_Qextserialport erbt. Den Aufruf der Methode readData() mache ich also mit . Aber wie kann ich dann auf eine protected Methode zugreifen?
gruß,
Muckl
verwende jetzt qextserialport 1.0, daten von der Seriellen Schnittstelle kann ich jetzt lesen. Die readyRead() Funktion funktioniert aber nicht so wie gewünscht. Wollte dies nun mit der qextserialport 1.2 versuchen. Problem ist, dass ich bei der 1.2 Version nicht auf die Methode readData() zugreifen kann, da diese als "protected" in der Win_qextserialport.h deklariert ist. Bei der 1.0 Version war sie noch als "public" deklariert. Meine Serielle Schnittstelle erstelle ich als Instanz von QextSerialPort. Und ich denke dass QextSerialPort von Win_Qextserialport erbt. Den Aufruf der Methode readData() mache ich also mit
Code: Alles auswählen
SerielleSchnittstelle->readData(); gruß,
Muckl