Seite 1 von 1

Qt + STL support

Verfasst: 13. Juni 2008 14:17
von Kext
Hallo,

ich benutze zur Zeit Qt 3.3.7 unter Windows.
Zusätzlich setze ich die STLPort ein.
Ich habe jetzt überlegt, das ich beim Bauen der Qt dieser das ja sicher mitteilen sollten. (include Pfad setzen)
Da stellt sich mir nun die Frage, warum kann ich in dem Reconfigure von Qt überhaupt die STL aktivieren/deaktivieren. Sprich was passiert dadurch und wie wirkt sich das einbinden der STL aus?

Gruß Kext

Verfasst: 13. Juni 2008 17:20
von RHBaum
die QT ist auch "abhaengig" von der STL,
und noch schlimmer, die gibt stl klassen ueber ihre schnittstellen ...

die standard STL impl deines compilers, und die STLPort impl (wenn nicht anderer namespace eingeschaltet wurde) teilen sich aber die symbole !

also die QT z.b. verwendet bei QString::toStdString() den std::string aus der standard STL impl, und dein program denkt das es der std::string aus dem STLPort ist (er kennt ja nix anderes) ... und die beiden absolut ned binaerkompatibel sein muessen ... interpretiert dein compiler das ding als was anderes als es ist, und spaetestens zur Laufzeit beginnt der Alptraum ^^

deswegen sollte die QT mit der selben stl uebersetzt werden ...

Ciao ...

Verfasst: 13. Juni 2008 17:38
von PeterLustig
Nur so eine Erwähnung:

Hast du schonmal über ein Update nachgedacht? Qt 3 ist maßlos veraltet.

Verfasst: 13. Juni 2008 20:49
von Kext
@RHBaum
- thx, das habe ich befürchtet

@PeterLustig
- da denke ich oft drüber nach. ist aber auf grund der projektgröße nicht mehr möglich. da es eine 24/7 anwendung ist, möchte ich auch keine spielerein anfangen

Verfasst: 16. Juni 2008 08:35
von Kext
Aber noch mal zurück zur Frage, was bedeutet den das Aktivieren des "STL Häkchens"?

Verfasst: 19. Juni 2008 08:41
von Kext
Hat niemand eine Idee, was die STL Option im Reconfigure macht?

Verfasst: 19. Juni 2008 08:56
von Christian81

Code: Alles auswählen

-no-stl ............... Do not compile STL support.
-stl .................. Compile STL support.
-no-stl setzt also QT_NO_STL und damit wird der STL-support aus Qt entfernt.

Verfasst: 19. Juni 2008 10:38
von Kext
Christian danke für deine Antwort,

das Ausschalten des STL Supports ist mir schon klar. Ich verstehe nur nicht, was STL Support bedeutet.
Sorry für meine ungenaue Anfrage...

Verfasst: 19. Juni 2008 10:42
von Christian81

Verfasst: 19. Juni 2008 10:50
von Kext
Aah :idea: ;-)

Code: Alles auswählen

class Q_EXPORT QString
{
public:
    QString();                                  // make null string
    QString( QChar );                           // one-char string
    QString( const QString & );                 // impl-shared copy
    QString( const QByteArray& );               // deep copy
    QString( const QChar* unicode, uint length ); // deep copy
#ifndef QT_NO_CAST_ASCII
    QString( const char *str );                 // deep copy
#endif
#ifndef QT_NO_STL
    QString( const std::string& );                   // deep copy
#endif
.
.
.
thx...