qstring ambigous error ...

Alles rund um die Programmierung mit Qt
Antworten
cr3005
Beiträge: 4
Registriert: 19. November 2012 12:09

qstring ambigous error ...

Beitrag von cr3005 »

Hallo,

Ich probiere eine qt4 app von 2006 zum laufen zu bringen, und zwar mit qt4.8 : bekomme einen qstring ambigous error

reveal is ein exif metadata viewer. Er kompiliert ja auch, bis auf ein paar Kleinigkeiten, durch, aber hier haengts dann:

Code: Alles auswählen

g++ -c -pipe -O2 -O2 -I/usr/include -D_REENTRANT -Wall -W -DBIN_DIR=\""/usr/bin\"" -DRESOURCE_DIR=\""/usr/share/Reveal\"" -DTARGET=\""Reveal\"" -DNEEDED_TRANSLATIONS=\""Reveal commonDialogs generalTools qt\"" -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -Itmp -o tmp/dynamicSlider.o ../src/_commonWidgets/dynamicSlider.cpp
../src/_commonWidgets/dynamicSlider.cpp: In member function 'void DynamicSlider::setPrefix(QString)':
../src/_commonWidgets/dynamicSlider.cpp:54:27: error: call of overloaded 'QString(NULL)' is ambiguous
/usr/include/qt4/QtCore/qstring.h:428:43: note: candidates are: QString::QString(const QByteArray&)
/usr/include/qt4/QtCore/qstring.h:426:43: note:                 QString::QString(const char*)
/usr/include/qt4/QtCore/qstring.h:727:8: note:                 QString::QString(const QString&)
/usr/include/qt4/QtCore/qstring.h:106:5: note:                 QString::QString(QChar)
/usr/include/qt4/QtCore/qstring.h:105:14: note:                 QString::QString(const QChar*)
../src/_commonWidgets/dynamicSlider.cpp: In member function 'void DynamicSlider::setSuffix(QString)':
../src/_commonWidgets/dynamicSlider.cpp:68:27: error: call of overloaded 'QString(NULL)' is ambiguous
/usr/include/qt4/QtCore/qstring.h:428:43: note: candidates are: QString::QString(const QByteArray&)
/usr/include/qt4/QtCore/qstring.h:426:43: note:                 QString::QString(const char*)
/usr/include/qt4/QtCore/qstring.h:727:8: note:                 QString::QString(const QString&)
/usr/include/qt4/QtCore/qstring.h:106:5: note:                 QString::QString(QChar)
/usr/include/qt4/QtCore/qstring.h:105:14: note:                 QString::QString(const QChar*)
make: *** [tmp/dynamicSlider.o] Error 1

Code: Alles auswählen

void DynamicSlider::setPrefix( QString val )
{
  prefix1 = val;
  prefix2 = QString( NULL );
  updateTooltipLabel();
}
//==========================================
void DynamicSlider::setPrefixes( QString v1, QString v2 )
{
  prefix1 = v1;
  prefix2 = v2;
  updateTooltipLabel();
}
//==========================================
void DynamicSlider::setSuffix( QString val )
{
  suffix1 = val;
  suffix2 = QString( NULL );
  updateTooltipLabel();
}

die .h

Code: Alles auswählen

///set two prefix values, one for when the value is positive and one for when the value is negative.
  void setPrefixes( QString prefix1, QString prefix2 );
 
  ///set the suffix that is displayed after the current slider value
  void setSuffix( QString val );
 
  ///set two suffix values, one for when the value is positive and one for when the value is negative.
  void setSuffixes( QString suffix1, QString suffix2 );
das Komische ist, wenn ichs mit qt4.7 kompiliere, und vorher die NULL rausloesche, kompilierts durch und rennt auch.

Mit qt 4.8, kompilierts auch durch, aber ich krieg einen segmentation fault, gdb sagt was von ".... in Qstring::fromLocal8Bit(char const*, int) ()"

weiss da jemand rat?
kenn mich leider nicht wirklich mit qt aus..
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: qstring ambigous error ...

Beitrag von Christian81 »

QString(NULL) kann eben nicht aufgelöst werden da, wie der Compiler schon sagt, es mehrere Möglichkeiten gibt. Also gib dem Compiler etwas mehr Hilfe. Und da Du einen leeren String haben willst reicht QString(). Ist aber kein Qt sondern ein generelles C++ Problem.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
cr3005
Beiträge: 4
Registriert: 19. November 2012 12:09

Re: qstring ambigous error ...

Beitrag von cr3005 »

das hab ich ja gmacht, und es kompiliert ja auch durch, bei 4.7 und 4.8, nur es segfaulted bei 4.8

Code: Alles auswählen

(gdb) run
Starting program: /home/hero/Downloads/clay_2006_10_17/projects/Reveal 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe8bc5700 (LWP 8637)]
[New Thread 0x7fffe3fff700 (LWP 8638)]
 
Program received signal SIGSEGV, Segmentation fault.
QString::fromLocal8Bit (str=0x21 <Address 0x21 out of bounds>, size=-1) at tools/qstring.cpp:3960
3960	tools/qstring.cpp: No such file or directory.
(gdb) bt
#0  QString::fromLocal8Bit (str=0x21 <Address 0x21 out of bounds>, size=-1) at tools/qstring.cpp:3960
#1  0x00007ffff5f6ec8b in QCoreApplication::arguments () at kernel/qcoreapplication.cpp:2235
#2  0x00007ffff685cda0 in sm_performSaveYourself (smd=0x6ffdb0) at kernel/qapplication_x11.cpp:6078
#3  0x00007ffff685d989 in sm_saveYourselfCallback (smcConn=<optimized out>, clientData=<optimized out>, saveType=<optimized out>, 
    shutdown=<optimized out>, interactStyle=<optimized out>) at kernel/qapplication_x11.cpp:6061
#4  0x00007ffff3faadff in _SmcProcessMessage () from /usr/lib/x86_64-linux-gnu/libSM.so.6
#5  0x00007ffff3d9cfd6 in IceProcessMessages () from /usr/lib/x86_64-linux-gnu/libICE.so.6
#6  0x00007ffff5f81281 in QMetaObject::activate (sender=0x705c90, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fffffffd720)
    at kernel/qobject.cpp:3547
#7  0x00007ffff5fce2fe in QSocketNotifier::activated (this=<optimized out>, _t1=15) at .moc/release-shared/moc_qsocketnotifier.cpp:103
#8  0x00007ffff5f8a60b in QSocketNotifier::event (this=0x705c90, e=0x7fffffffdd40) at kernel/qsocketnotifier.cpp:317
#9  0x00007ffff67db894 in notify_helper (e=0x7fffffffdd40, receiver=0x705c90, this=0x6a18d0) at kernel/qapplication.cpp:4559
#10 QApplicationPrivate::notify_helper (this=0x6a18d0, receiver=0x705c90, e=0x7fffffffdd40) at kernel/qapplication.cpp:4531
#11 0x00007ffff67e0713 in QApplication::notify (this=0x7fffffffdfc0, receiver=0x705c90, e=0x7fffffffdd40) at kernel/qapplication.cpp:4420
#12 0x00007ffff5f6ce9c in QCoreApplication::notifyInternal (this=0x7fffffffdfc0, receiver=0x705c90, event=0x7fffffffdd40)
    at kernel/qcoreapplication.cpp:876
#13 0x00007ffff5f9ba97 in sendEvent (event=0x7fffffffdd40, receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#14 socketNotifierSourceDispatch (source=0x6a4b90) at kernel/qeventdispatcher_glib.cpp:110
#15 0x00007ffff4908d53 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007ffff49090a0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x00007ffff4909164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007ffff5f9c3bf in QEventDispatcherGlib::processEvents (this=0x6a3640, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#19 0x00007ffff6883d5e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#20 0x00007ffff5f6bc82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#21 0x00007ffff5f6bed7 in QEventLoop::exec (this=0x7fffffffdf50, flags=...) at kernel/qeventloop.cpp:204
#22 0x00007ffff5f70f67 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148
#23 0x00000000004131de in main ()
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: qstring ambigous error ...

Beitrag von Christian81 »

Das hat nichts mit dem QString zu tun. Strippe dein Programm so weit ab bis es nicht mehr crasht um den Fehler zu finden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
cr3005
Beiträge: 4
Registriert: 19. November 2012 12:09

Re: qstring ambigous error ...

Beitrag von cr3005 »

tja leider is das nicht mein programm, und ich moechts es eigentlich nur auf ubuntu 12.04 zum Laufen bringen, es wie gesagt schon 6jahre alter code, und mit qt4.7 laufts perfekt...
Um da tiefer zu graben fehlt mir auch das Verstanedis, hab gerade mal so von c++ ein bisschen eine Ahnung, und von qt gar nix.. mit den qt4.7 libs in einen Ordner gehaut, rennts ja auch auf 12.04, nur braeucht ich den Platz fuer was anderes...
cr3005
Beiträge: 4
Registriert: 19. November 2012 12:09

Re: qstring ambigous error ...

Beitrag von cr3005 »

Code: Alles auswählen

//==========================================
void DynamicSlider::setPrefix( QString val )
{
  prefix1 = val;
  prefix2 = QString();
  prefix2.clear();
  updateTooltipLabel();
}
//==========================================
void DynamicSlider::setPrefixes( QString v1, QString v2 )
{
  prefix1 = v1;
  prefix2 = v2;
  updateTooltipLabel();
}
//==========================================
void DynamicSlider::setSuffix( QString val )
{
  suffix1 = val;
  suffix2 = QString();
  suffix2.clear();
  updateTooltipLabel();
}


mit dem funktionierts, gottseidank.

danke trotzdem...
Antworten