QT4 ohne STL-Support
Hallo Liste, ich versuche gerade ein wenig mit QT zu programmieren. Dazu rufe ich eine Funktion, die einen std::string verlangt auf und übergebe aber einen QString. Laut Dokumentation gibt es eine QString::toStdString-Funktion. Allerdings beschwert sich der Compiler dann:
error: ‘class QString’ has no member named ‘toStdString’
Nun habe ich im Internet gefunden, dass es daran liegen könnte, dass QT4 mit "- no-stl" kompiliert wurde. Einen Bugreport[0] (allerdings für openSuSE 10.0) habe ich gefunden. Ich verwende das QT-Repo[1] unter openSUSE11.3 und habe libqt4-4.7.1-150.2.x86_64 (mit den entsprechenden devel-Paketen) installiert. Kennt sich jemand einen Hinweise? Vielen Dank Felix [0] https://bugzilla.novell.com/show_bug.cgi?id=116804 [1] http://download.opensuse.org/repositories/KDE:/Qt/openSUSE_11.3
Zu unten stehenden Problem habe ich zunächste folgende Notlösung: QString qStr "foo bar"; std::string str(qStr.toLatin1().data()); Zur Erklärung: toLatin1() ergibt ein QByteArray und data() macht daraus ein char*. Damit lässt sich ein std::string konstruieren. Das ist allerdings eine Notlösung. Er wäre schön, wenn das eigentlich Problem behoben werden kann. Liebe Grüße Felix On Saturday 18 December 2010 16:25:29 Felix Lemke wrote:
Hallo Liste,
ich versuche gerade ein wenig mit QT zu programmieren. Dazu rufe ich eine Funktion, die einen std::string verlangt auf und übergebe aber einen QString. Laut Dokumentation gibt es eine QString::toStdString-Funktion. Allerdings
beschwert sich der Compiler dann:
error: ‘class QString’ has no member named ‘toStdString’
Nun habe ich im Internet gefunden, dass es daran liegen könnte, dass QT4 mit "- no-stl" kompiliert wurde. Einen Bugreport[0] (allerdings für openSuSE 10.0) habe ich gefunden.
Ich verwende das QT-Repo[1] unter openSUSE11.3 und habe libqt4-4.7.1-150.2.x86_64 (mit den entsprechenden devel-Paketen) installiert.
Kennt sich jemand einen Hinweise?
Vielen Dank Felix
[0] https://bugzilla.novell.com/show_bug.cgi?id=116804 [1] http://download.opensuse.org/repositories/KDE:/Qt/openSUSE_11.3
Hallo Felix, ich will dir nicht vor den Kopf stoßen, aber wir haben zum Thema Programmierung eine eigenständige deutsche Mailingliste: opensuse-programming-de@opensuse.org Dort bin ich wie auch andere angemeldet. Am 18.12.2010 08:25, schrieb Felix Lemke:
ich versuche gerade ein wenig mit QT zu programmieren. Dazu rufe ich eine Funktion, die einen std::string verlangt auf und übergebe aber einen QString. Laut Dokumentation gibt es eine QString::toStdString-Funktion. Allerdings beschwert sich der Compiler dann:
error: ‘class QString’ has no member named ‘toStdString’
Ein vollständiges Code-Beispiel basierend auf dieses Problem wäre nicht verkehrt und lässt sich leichter überprüfen.
Nun habe ich im Internet gefunden, dass es daran liegen könnte, dass QT4 mit "- no-stl" kompiliert wurde. Einen Bugreport[0] (allerdings für openSuSE 10.0) habe ich gefunden.
Das ist aber sehr sehr alt. Ich würde viel eher vermuten, dass es ein ganz anderes Problem ist, sonst wäre das Problem bereits beim Kompilieren von Qt-Anwendungen im OBS aufgefallen.
Ich verwende das QT-Repo[1] unter openSUSE11.3 und habe libqt4-4.7.1-150.2.x86_64 (mit den entsprechenden devel-Paketen) installiert.
Kennt sich jemand einen Hinweise?
Erst mal ein Code-Beispiel liefern. Dann können wir sehen, wo evtl. das Problem liegt. -- Gruß Sebastian - openSUSE Member (Freespacer) Webseite/Blog: <http://www.sebastian-siebert.de> Wichtiger Hinweis zur openSUSE Mailing Liste: <http://de.opensuse.org/OpenSUSE_Mailinglisten-Netiquette> -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Sat, 18 Dec 2010 16:25:29 +0900, Felix Lemke <felixlemke@arcor.de> wrote:
ich versuche gerade ein wenig mit QT zu programmieren. Dazu rufe ich eine Funktion, die einen std::string verlangt auf und übergebe aber einen QString. Laut Dokumentation gibt es eine QString::toStdString-Funktion. Allerdings beschwert sich der Compiler dann:
error: ‘class QString’ has no member named ‘toStdString’
Bitte frage in Zukunft auf opensuse-programming-de, die Liste ist für solche Fragen vorgesehen. Die englische opensuse-programming ist eine zusätzliche Anlaufstelle.
Nun habe ich im Internet gefunden, dass es daran liegen könnte, dass QT4 mit "- no-stl" kompiliert wurde. Einen Bugreport[0] (allerdings für openSuSE 10.0) habe ich gefunden.
Du gehst zu den Quellen des Pakets und schaust Dir die .spec Datei an: https://build.opensuse.org/package/view_file?file=libqt4.spec&package=libqt4&project=KDE%3AQt&srcmd5=617ee411d69666cb19ed0176760284d4 Da siehst Du, mit welchen Optionen libqt4 übersetzt wurde. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Sat, 18 Dec 2010 20:14:06 +0100, Philipp Thomas <Philipp.Thomas2@gmx.net> wrote:
Da siehst Du, mit welchen Optionen libqt4 übersetzt wurde.
Und wie Sebastian schrieb, ein vollständiges Code-Beispiel mit dem sich der Fehler reproduzieren lässt wäre äußerst hilfreich. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Sunday 19 December 2010 04:14:06 Philipp Thomas wrote:
On Sat, 18 Dec 2010 16:25:29 +0900, Felix Lemke <felixlemke@arcor.de>
wrote:
ich versuche gerade ein wenig mit QT zu programmieren. Dazu rufe ich eine Funktion, die einen std::string verlangt auf und übergebe aber einen QString. Laut Dokumentation gibt es eine QString::toStdString-Funktion. Allerdings
beschwert sich der Compiler dann:
error: ‘class QString’ has no member named ‘toStdString’
Bitte frage in Zukunft auf opensuse-programming-de, die Liste ist für solche Fragen vorgesehen. Die englische opensuse-programming ist eine zusätzliche Anlaufstelle. Super, mir war nicht bewusst, das es die Liste gibt. @Sebastian: keine Angst, so leicht bin ich nicht vor den Kopf zu stoßen.^^
Nun habe ich im Internet gefunden, dass es daran liegen könnte, dass QT4 mit "- no-stl" kompiliert wurde. Einen Bugreport[0] (allerdings für openSuSE 10.0) habe ich gefunden.
Du gehst zu den Quellen des Pakets und schaust Dir die .spec Datei an: https://build.opensuse.org/package/view_file?file=libqt4.spec&package=libqt 4&project=KDE%3AQt&srcmd5=617ee411d69666cb19ed0176760284d4
Da siehst Du, mit welchen Optionen libqt4 übersetzt wurde. Also an der Übersetzung von QT bei openSUSE liegt es nicht.
Ich habe aber inzwischen den Fehler gefunden. In der CMakeLists.txt steht u.a. die Zeile
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) Dabei enthält die Variable ${KDE4_DEFINITIONS} u.a. die Anweisung "-DQT_NO_STL". Ich werde das jetzt also mal auf die KDE-devel-Mailingliste verschieben.
Danke für eure Hilfe. Erst das von Philipp vorgeschlagende Minimalbeispiel (und damit eine Minimal-CMakeLists.txt) hat mich auf die richtige Spur gebracht. Liebe Grüße Felix
participants (3)
-
Felix Lemke
-
Philipp Thomas
-
Sebastian Siebert