QCustomplot - seqfault
-
Unter Linux Mint 13, Qt 5.2 scheint bei mir nicht mal mehr das Beispielprogramm zu funktionieren:
#include <QApplication> #include <QMainWindow> #include <qcustomplot.h> int main(int argc, char *argv[]) { QApplication a(argc, argv); QMainWindow window; // setup customPlot as central widget of window: QCustomPlot customPlot; window.setCentralWidget(&customPlot); // create plot (from quadratic plot example): QVector<double> x(101), y(101); for (int i=0; i<101; ++i) { x[i] = i/50.0 - 1; y[i] = x[i]*x[i]; } customPlot.addGraph(); customPlot.graph(0)->setData(x, y); customPlot.xAxis->setLabel("x"); customPlot.yAxis->setLabel("y"); customPlot.rescaleAxes(); window.setGeometry(100, 100, 500, 400); window.show(); return a.exec(); }
Pro file
#------------------------------------------------- # # Project created by QtCreator 2016-04-20T11:33:06 # #------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport TARGET = Plot TEMPLATE = app DEFINES += QCUSTOMPLOT_COMPILE_LIBRARY SOURCES += main.cpp HEADERS += FORMS += unix|win32: LIBS += -lqcustomplot
Kompiliert einwandfrei, aber beim Ausführen erhalte ich einen segmentation-fault.
Kann das jemand ausprobieren?
-
Ausprobieren kann ich das nicht, weil ich weder deine Library noch das Projekt, das sie erzeugt, habe. Der Code im main funktioniert bei mir aber einwandfrei.
Warum benutzt du nicht die .pro Datei, die zum Beispiel gehört? Da steht zum BeispielDEFINES += QCUSTOMPLOT_USE_LIBRARY
statt
DEFINES += QCUSTOMPLOT_COMPILE_LIBRARY
Klingt auch vernünftiger, oder?
-
Da habe ich jetzt versehentlich die falsche .pro Datei kopiert.
Ich benutze schon die mirgelieferte. Ich habe jetzt extra nochmal neu kompiliert und bekomme immer noch einen segfault
-
Wo segfaulted es denn?
Was sagt der Debugger?
-
Zum ersten: Das pro-File das ich gepostet habe, war das falsche. Ich nutze das mitgelieferte.
Es sieht so aus, als ob die bei Mint 17.3 mitgelieftere .so-Datei nicht kompatibel wäre. Nutze ich die selbst kompilierten Bibliotheken, klappt alles.
Aber was sagt der Debugger... gute Frage:
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Program received signal SIGSEGV, Segmentation fault. 0x00007ffff5637dfc in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
(gdb) backtrace #0 0x00007ffff5637dfc in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4 #1 0x00007ffff7dea13a in call_init (l=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7fffffffe078, env=env@entry=0x7fffffffe088) at dl-init.c:78 #2 0x00007ffff7dea223 in call_init (env=<optimized out>, argv=<optimized out>, argc=<optimized out>, l=<optimized out>) at dl-init.c:36 #3 _dl_init (main_map=0x7ffff7ffe1c8, argc=1, argv=0x7fffffffe078, env=0x7fffffffe088) at dl-init.c:126 #4 0x00007ffff7ddb30a in _dl_start_user () from /lib64/ld-linux-x86-64.so.2 #5 0x0000000000000001 in ?? () #6 0x00007fffffffe390 in ?? () #7 0x0000000000000000 in ?? ()
(gdb) frame 3 #3 _dl_init (main_map=0x7ffff7ffe1c8, argc=1, argv=0x7fffffffe078, env=0x7fffffffe088) at dl-init.c:126 126 dl-init.c: Datei oder Verzeichnis nicht gefunden.
Kann mir jemand was dazu sagen?