QProcess unexpectedly finished
-
thank you for the answers
Starting /home/krist/qt_proj/build-try_QProcess-Desktop-Debug/try_QProcess ...
is mine project where i make.
and the QT5.13.2 is where the analogclock file is
what i mean run is build and run (click on the little hammer in the left below qt and the play icon).
QProcess *myProcess = new QProcess(this); QString program = "/home/krist/Qt5.13.2/examples/Qt-5.13.2/gui/build-analogclock-Desktop_Qt_5_13_2_GCC_64bit-Debug/analogclock"; QStringList arguments; arguments << "-style" << "motif"; myProcess->start(program, arguments);
I have found the analogclock at file build-analogclock-Desktop ...
but when i source it like below, nothing happened
Is there anything wrong? -
Probably the example fails to run because Qt libraries are not found by
ldd
. You need to setLD_LIBRARY_PATH
for it to work.To get the actual error messages or warnings coming from QProcess, make sure you connect to errorOccured signal and get all output from stderr.
-
I just realied that every time I build and run there is always a notification like this :
15:25:54: Starting /home/krist/qt_proj/build-try_qprocess1-Desktop-Debug/try_qprocess1 ... 15:25:58: The program has unexpectedly finished. 15:25:58: The process was ended forcefully. 15:25:58: /home/krist/qt_proj/build-try_qprocess1-Desktop-Debug/try_qprocess1 crashed.
Is it the error that you looking for?
-
@krist said in QProcess unexpectedly finished:
Is it the error that you looking for?
It's not me looking for errors here, it's you :-)
15:25:58: The program has unexpectedly finished.
No, this tells us nothing. We need more information. Run your app with a debugger (F5), it will show you where the crash occurs.
-
You've commented out the
on_pushButton_clicked()
slot, so it's not crashing. -
Does it crash when you click the button? The screenshot does not show any crash.
-
@krist
I can see by enlarging your image that you are still not supplying the correct path for the subprocess. Nor does it even have the executable you wish to run. There is no point telling us here your code contains a certain string if it does not actually use that string. You need to understand the absolute basics about paths if you expect to develop code....Further, you should read the
QProcess
documentation and e.g. both check return results anderrorOccurred
slot if you are having trouble running a process and expect to get error status back. -
@krist said in QProcess unexpectedly finished:
I use the path based on projects analogClock
No, you don't. The screenshot (of your code running the
QProcess
) shows a path which is simply incorrect. Whether you've changed that since screenshot I cannot say. -
@krist
Then you need to use something in your code which is actually the same as that, not what your screen shot has which is simply not the same!
Hint:/home/krist/Qt5.13.2/Examples/Qt-5.13.2/gui/build-analogclock-Desktop_Qt_5_13_2_GCC_64bit-Debug/analogclock
.
Which you seem to have had at one point, and then changed to something wrong. -
yeah i have tried that and error is come up
here is the error/home/krist/Qt5.13.2/Examples/Qt-5.13.2/gui/build-analogclock-Desktop_Qt_5_13_2_GCC_64bit-Debug/analogclock: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.13' not found (required by /home/krist/Qt5.13.2/Examples/Qt-5.13.2/gui/build-analogclock-Desktop_Qt_5_13_2_GCC_64bit-Debug/analogclock)
-
@krist said in QProcess unexpectedly finished:
yeah i have tried that and error is come up
here is the error/home/krist/Qt5.13.2/Examples/Qt-5.13.2/gui/build-analogclock-Desktop_Qt_5_13_2_GCC_64bit-Debug/analogclock: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.13' not found (required by /home/krist/Qt5.13.2/Examples/Qt-5.13.2/gui/build-analogclock-Desktop_Qt_5_13_2_GCC_64bit-Debug/analogclock)
That's where
LD_LIBRARY_PATH
comes in ;-) You can set it with https://doc.qt.io/qt-5/qprocess.html#setProcessEnvironment -
@krist
OK, let's start from there! That path is correct, so let's not change off that!Now you have some issue of not finding the correct Qt version.
Are you Linux? Did you build your own Qt, or did you accept the one supplied with the distro? Have you installed more than one version of Qt at some point?
Ah, I see @sierdzio is pointing you at what you can look at.... I will leave you in his capable hands :)
-
@sierdzio
ok
so right now the problem lies on my install qt right?
where should i source that environment?
is it to my workable analogclock?env.insert("TMPDIR", "C:\\MyApp\\temp"); // Add an environment variable
@JonB
yeah i'm using linux and have 2 qt (one with ros plugin and the others only for qt)
tahnk you so much for your help!!! -
@krist said in QProcess unexpectedly finished:
@sierdzio
ok
so right now the problem lies on my install qt right?No. You simply have compiled AnalogClock using Qt incompatible with the one installed in the system. It's not an error, it's not a problem. Its actually quite common thing. Try double-cliking on your analogclock binary file - it will probably fail to run, too.
The proper way to solve it is to deploy AnalogClock so that it runs on your system without any changes to paths.
where should i source that environment?
is it to my workable analogclock?env.insert("TMPDIR", "C:\\MyApp\\temp"); // Add an environment variable
You need to add
LD_LIBRARY_PATH
and point it to your Qt 5.13.2 installation directory - where libraries are located. So something like:env.insert("LD_LIBRARY_PATH", "/home/krist/qt/Qt5.13.2/gcc_64/lib/");
That needs to be fed to your QProcess so that the system can find proper Qt libraries when running Analog Clock example.
The reason why it runs from Qt Creator is that Qt Creator sets
LD_LIBRARY_PATH
automatically.