radareorg / iaito

Official QT frontend of radare2
GNU General Public License v3.0
1.02k stars 86 forks source link

iaito 5.70 official release for Windows is missing required Qt DLLs #93

Closed Lathe26 closed 1 month ago

Lathe26 commented 2 years ago

Environment Details

Below script run from cygwin prompt, even though iaito is typically run by just double-clicking on it.

$ ./iaito.exe -v
error while loading shared libraries: Qt5Networkd.dll: cannot open shared object file: No such file or directory

$ date
Mon, Jul 11, 2022  8:47:59 PM

$ ./r2.bat -v
radare2 5.7.4 1 @ windows-x86-64 git.5.7.4
commit: 5bc3bf4e6c327121c8f82f20a603382cbba07dbb build: Wed 07/06/2022__22:49:07.33

$ uname -ms
CYGWIN_NT-10.0 x86_64

Description

The official release of iaito.exe for Windows 64-bit is missing the various Qt*.dlls that previous releases have shipped with (such as 5.3.1). The result is that iaito.exe can't execute, other than displaying error message boxes that say various DLLs are missing.

Note: I did attempt to locate an easy way to install the DLLs but the only method found required installing most of the Qt development environment (similar to having to install all of Visual Studio just to get the files in vc_redist.exe). I considered copying the Qt*.dll files from an older iaito release, but it is unclear whether that version of Qt was the correct one.

Repro Steps

  1. Double-click on iaito.exe to launch it

Result: A series of error message boxes are displayed, complaining sequence that the following DLLs are missing: QtCored.dll, QtGuid.dll, QtWidgetsd.dll, and QtSvgd.dll

iaito Error Message on Launch
trufae commented 1 year ago

that's expected. qt doesnt provide any elegant way to distribute their libraries, if you find a clean and portable way to do that let me know and i'll ship them for mac, linux and windows too

Lathe26 commented 1 year ago

I can't speak to the other platforms. However, most of the releases from 5.20 thru 5.5.0-beta had it included for WIndows.

An alternative, though less desirable, would be for the README.md to have complete instructions on how to install all the required components. These would include URLs and version numbers of the components.

HwapX commented 1 year ago

And due to the "d".dll suffix, I think the executable is being linked to the debug versions of the dlls, so the dlls that come with the older versions won't work.

Vort commented 1 year ago

If you can't copy several files, link libraries statically then.

trufae commented 1 year ago

Make a pr doing this if you know how to do it. I tried many times but didnt managed to make this, the documentation from qt doesnt seems to work and even less if you try to make it work on all. 3 major platforms

Lathe26 commented 1 year ago

Unfortunately, I don't know how to build against the Qt libraries.

The hope was to just run and use iaito.exe. If there isn't a way to provide a pre-compiled Windows binary (due to lack of Qt DLL binaries or not being able to statically link Qt to iaito.exe), then it sounds like there won't be pre-compiled binary releases anymore. This would be unfortunate, but it sounds like the iaito team's hand is being forced.

trufae commented 1 year ago

Theres no such team, its just me doing everything everywhere. Maybe with qt6 the situation has improved. I should finish the pr at some point but my main priority is not the gui.

Considering anyone is able to contribute but none of the 5 people that promised me to code for it did a single commit in 3 years i dont expect anything to change this year either.

I also wish qt wasnt such a piece of commercial crap. ive already reduced complexity and tech debt a lot in all this time, and the distribution/linking is the final boss that doesnt seems to be easy to solve when it should be a one line thing with qtdeploy it isnt.

i will retry when i get bored again, meanwhile the way to go is building it by yourself or just install qt separately in your system

trufae commented 1 year ago

Btw if you have wsl2 you may try these steps as imho its much better way to install software because it runs sandboxed and reduces drastically the problems of distributing software https://infosec.exchange/@radareorg/109569503348677777

fake-name commented 1 year ago

that's expected. qt doesnt provide any elegant way to distribute their libraries, if you find a clean and portable way to do that let me know and i'll ship them for mac, linux and windows too

Isn't this what windeployqt is for?

Unless you're using Qml, it should just copy the required DLLs automatically.

C. F. https://stackoverflow.com/a/22217114/268006

trufae commented 1 year ago

Didnt worked for me, at least on linux and mac. I also read about this tool and its whats suposed to do, if you wanna give it a try it will be helpful to do this in the ci if it works. Also now iaito works on qt6 too, so maybe the qt6 deploything works as it should. And yeah theres no qml involved