Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
151 user(s) are online (89 user(s) are browsing Forums)

Members: 0
Guests: 151

more...

Support us!

Headlines

 
  Register To Post  

(1) 2 »
AmiQute Qt6 Tutorial
Just can't stay away
Just can't stay away


See User information
Resized Image

Here is a fresh tutorial. Beware of robot noises.

AmiQute Tutorial


Edited by elfpipe on 2025/8/5 15:41:24
Go to top
Re: AmiQute Qt6 Tutorial
Site Builder
Site Builder


See User information
Wow. Thank you for the tutorial. It is quite explonatory for someone to start doing a port.

I will try to port and app I have in mind, but first I will start with something small, like QTAlarm (https://github.com/CountMurphy/QTalarm)

Follow me on
Ko-fi, Twitter, YouTube, Twitch
Go to top
Re: AmiQute Qt6 Tutorial
Just can't stay away
Just can't stay away


See User information
Annnn......nd we have our first contestant! What a wonderful day!

@walkero
I think it is a great idea. There is the caveat, that we don't have a working backend for QAudioOutput, so there will be a bunch of extra points for securing that part. I will, of course, help as much as I can, but I really encourage crowd collaborations and those of you, who are not already familiar with the source code to take on the challenge and participate in the pleasure of working with Qt6 on any level. It is so very fulfilling, especially when all the basic functioning has been taken care of. And there are great prizes.... notch-notch ;) .

Go to top
Re: AmiQute Qt6 Tutorial
Just can't stay away
Just can't stay away


See User information
@walkero

Quote:

I will try to port and app I have in mind, but first I will start with something small, like QTAlarm (https://github.com/CountMurphy/QTalarm)


You mean this?

https://appimage.github.io/QTalarm/

Looks great... I'll keep my fingers crossed that it works.

MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne x5000/40 AmigaOs4.1 FE
Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
Not sure if I find the time but I might do a retroarch build
with Qt GUI enabled.

@George is there a version of your docker gcc image
to include the Qt includes and libs or what do I need to do
there? Thanks!

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
Not sure if I find the time but I might do a retroarch build
with Qt GUI enabled.

@George is there a version of your docker gcc image
to include the Qt includes and libs or what do I need to do
there? Thanks!

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
Hi!

How do I link with all needed Qt .a files ?

My current linker command is (quite a wall of text, sorry )

Obviously there is some Qt related stuff missing. Is there some way to have this "all-in-once" ? (I use a normal makefile BTW, no cmake or anything special, RetroArch comes with a normal makefile also including optional Qt6 Support).

I assume the order of linkage of the various lib's also might be an issue. Or do I need to link them in as a group ?

Thanks in advance for answering these "Qt-Newbie questions".

Thanks (and I hope this webpage does not again double-post my post).

Best regards,
Steffen

ppc-amigaos-g++ -DARCH_POWERPC -mno-altivec -mcpu=750 -mhard-float -funroll-loops -ftree-vectorize -mno-powerpc64 -mno-altivec -Ofast -ffast-math -DCPU_IS_BIG_ENDIAN -DHAVE_LANGEXTRA -DHAVE_COMPRESSION=1 -DHAVE_ZARCH=1 -DHAVE_THREAD_STORAGE=1 -DHAVE_QT6=1 -DHAVE_QT=1 -DHAVE_QT_WRAPPER=1 -o retroarch.exe obj-750/frontend/frontend_driver.o obj-750/retroarch.o obj-750/runloop.o obj-750/ui/ui_companion_driver.o obj-750/camera/camera_driver.o obj-750/record/record_driver.o obj-750/record/drivers/record_wav.o obj-750/command.o obj-750/msg_hash.o obj-750/intl/msg_hash_us.o obj-750/./libretro-common/queues/task_queue.o obj-750/tasks/task_content.o obj-750/tasks/task_patch.o obj-750/save.o obj-750/tasks/task_save.o obj-750/tasks/task_movie.o obj-750/tasks/task_file_transfer.o obj-750/tasks/task_image.o obj-750/tasks/task_playlist_manager.o obj-750/tasks/task_manual_content_scan.o obj-750/tasks/task_core_backup.o obj-750/./libretro-common/encodings/encoding_utf.o obj-750/./libretro-common/encodings/encoding_crc32.o obj-750/./libretro-common/encodings/encoding_base64.o obj-750/./libretro-common/compat/fopen_utf8.o obj-750/./libretro-common/compat/compat_strldup.o obj-750/./libretro-common/lists/file_list.o obj-750/./libretro-common/lists/dir_list.o obj-750/./libretro-common/file/retro_dirent.o obj-750/./libretro-common/streams/stdin_stream.o obj-750/./libretro-common/streams/file_stream.o obj-750/./libretro-common/streams/file_stream_transforms.o obj-750/./libretro-common/streams/interface_stream.o obj-750/./libretro-common/streams/memory_stream.o obj-750/./libretro-common/streams/network_stream.o obj-750/./libretro-common/vfs/vfs_implementation.o obj-750/./libretro-common/lists/string_list.o obj-750/./libretro-common/string/stdstring.o obj-750/./libretro-common/memmap/memalign.o obj-750/./libretro-common/file/nbio/nbio_stdio.o obj-750/./libretro-common/lists/linked_list.o obj-750/./libretro-common/lists/nested_list.o obj-750/./libretro-common/queues/generic_queue.o obj-750/./libretro-common/file/nbio/nbio_intf.o obj-750/./libretro-common/file/file_path.o obj-750/./libretro-common/file/file_path_io.o obj-750/file_path_special.o obj-750/./libretro-common/hash/lrc_hash.o obj-750/audio/audio_driver.o obj-750/input/input_driver.o obj-750/input/common/input_hid_common.o obj-750/led/led_driver.o obj-750/gfx/video_driver.o obj-750/gfx/gfx_display.o obj-750/gfx/gfx_animation.o obj-750/configuration.o obj-750/./libretro-common/dynamic/dylib.o obj-750/cores/dynamic_dummy.o obj-750/./libretro-common/queues/message_queue.o obj-750/gfx/gfx_thumbnail_path.o obj-750/gfx/gfx_thumbnail.o obj-750/state_manager.o obj-750/gfx/drivers_font_renderer/bitmapfont.o obj-750/gfx/drivers_font_renderer/bitmapfont_10x10.o obj-750/gfx/drivers_font_renderer/bitmapfont_6x10.o obj-750/tasks/task_autodetect.o obj-750/input/input_autodetect_builtin.o obj-750/input/input_keymaps.o obj-750/./libretro-common/queues/fifo_queue.o obj-750/./libretro-common/compat/compat_fnmatch.o obj-750/./libretro-common/compat/compat_posix_string.o obj-750/cheat_manager.o obj-750/core_info.o obj-750/core_backup.o obj-750/core_option_manager.o obj-750/./libretro-common/file/config_file.o obj-750/./libretro-common/file/config_file_userdata.o obj-750/runtime_file.o obj-750/disk_index_file.o obj-750/tasks/task_screenshot.o obj-750/tasks/task_powerstate.o obj-750/./libretro-common/gfx/scaler/scaler.o obj-750/./libretro-common/gfx/scaler/pixconv.o obj-750/./libretro-common/gfx/scaler/scaler_int.o obj-750/./libretro-common/gfx/scaler/scaler_filter.o obj-750/gfx/font_driver.o obj-750/gfx/video_filter.o obj-750/./libretro-common/audio/resampler/audio_resampler.o obj-750/./libretro-common/audio/dsp_filter.o obj-750/./libretro-common/audio/resampler/drivers/sinc_resampler.o obj-750/./libretro-common/utils/md5.o obj-750/playlist.o obj-750/./librecp /opt/code/gemrb_os4_7400/gemrb/compilerstuff/libdl.so /opt/ppc-amigaos/ppc-root@2ea4d3de6572:/usr/src/RetroArch_exp# ppc-amigaos-g++ -DARCH_POWERPC -mno-altivec -mcpu=750 -mhard-float -funroll-loops -ftree-vectorize -mno-powerpc64 -mno-altivec -Ofast -ffast-math -DCPU_IS_BIG_ENDIAN -DHAVE_LANGEXTRA -DHAVE_COMPRESSION=1 -DHAVE_ZARCH=1 -DHAVE_THREAD_STORAGE=1 -DHAVE_QT6=1 -DHAVE_QT=1 -DHAVE_QT_WRAPPER=1 -o retroarch.exe obj-750/frontend/frontend_driver.o obj-750/retroarch.o obj-750/runloop.o obj-750/ui/ui_companion_driver.o obj-750/camera/camera_driver.o obj-750/record/record_driver.o obj-750/record/drivers/record_wav.o obj-750/command.o obj-750/msg_hash.o obj-750/intl/msg_hash_us.o obj-750/./libretro-common/queues/task_queue.o obj-750/tasks/task_content.o obj-750/tasks/task_patch.o obj-750/save.o obj-750/tasks/task_save.o obj-750/tasks/task_movie.o obj-750/tasks/task_file_transfer.o obj-750/tasks/task_image.o obj-750/tasks/task_playlist_manager.o obj-750/tasks/task_manual_content_scan.o obj-750/tasks/task_core_backup.o obj-750/./libretro-common/encodings/encoding_utf.o obj-750/./libretro-common/encodings/encoding_crc32.o obj-750/./libretro-common/encodings/encoding_base64.o obj-750/./libretro-common/compat/fopen_utf8.o obj-750/./libretro-common/compat/compat_strldup.o obj-750/./libretro-common/lists/file_list.o obj-750/./libretro-common/lists/dir_list.o obj-750/./libretro-common/file/retro_dirent.o obj-750/./libretro-common/streams/stdin_stream.o obj-750/./libretro-common/streams/file_stream.o obj-750/./libretro-common/streams/file_stream_transforms.o obj-750/./libretro-common/streams/interface_stream.o obj-750/./libretro-common/streams/memory_stream.o obj-750/./libretro-common/streams/network_stream.o obj-750/./libretro-common/vfs/vfs_implementation.o obj-750/./libretro-common/lists/string_list.o obj-750/./libretro-common/string/stdstring.o obj-750/./libretro-common/memmap/memalign.o obj-750/./libretro-common/file/nbio/nbio_stdio.o obj-750/./libretro-common/lists/linked_list.o obj-750/./libretro-common/lists/nested_list.o obj-750/./libretro-common/queues/generic_queue.o obj-750/./libretro-common/file/nbio/nbio_intf.o obj-750/./libretro-common/file/file_path.o obj-750/./libretro-common/file/file_path_io.o obj-750/file_path_special.o obj-750/./libretro-common/hash/lrc_hash.o obj-750/audio/audio_driver.o obj-750/input/input_driver.o obj-750/input/common/input_hid_common.o obj-750/led/led_driver.o obj-750/gfx/video_driver.o obj-750/gfx/gfx_display.o obj-750/gfx/gfx_animation.o obj-750/configuration.o obj-750/./libretro-common/dynamic/dylib.o obj-750/cores/dynamic_dummy.o obj-750/./libretro-common/queues/message_queue.o obj-750/gfx/gfx_thumbnail_path.o obj-750/gfx/gfx_thumbnail.o obj-750/state_manager.o obj-750/gfx/drivers_font_renderer/bitmapfont.o obj-750/gfx/drivers_font_renderer/bitmapfont_10x10.o obj-750/gfx/drivers_font_renderer/bitmapfont_6x10.o obj-750/tasks/task_autodetect.o obj-750/input/input_autodetect_builtin.o obj-750/input/input_keymaps.o obj-750/./libretro-common/queues/fifo_queue.o obj-750/./libretro-common/compat/compat_fnmatch.o obj-750/./libretro-common/compat/compat_posix_string.o obj-750/cheat_manager.o obj-750/core_info.o obj-750/core_backup.o obj-750/core_option_manager.o obj-750/./libretro-common/file/config_file.o obj-750/./libretro-common/file/config_file_userdata.o obj-750/runtime_file.o obj-750/disk_index_file.o obj-750/tasks/task_screenshot.o obj-750/tasks/task_powerstate.o obj-750/./libretro-common/gfx/scaler/scaler.o obj-750/./libretro-common/gfx/scaler/pixconv.o obj-750/./libretro-common/gfx/scaler/scaler_int.o obj-750/./libretro-common/gfx/scaler/scaler_filter.o obj-750/gfx/font_driver.o obj-750/gfx/video_filter.o obj-750/./libretro-common/audio/resampler/audio_resampler.o obj-750/./libretro-common/audio/dsp_filter.o obj-750/./libretro-common/audio/resampler/drivers/sinc_resampler.o obj-750/./libretro-common/utils/md5.o obj-750/playlist.o obj-750/./libretro-common/features/features_cpu.o obj-750/verbosity.o obj-750/./libretro-common/playlists/label_sanitization.o obj-750/./libretro-common/time/rtime.o obj-750/manual_content_scan.o obj-750/disk_control_interface.o obj-750/tasks/task_audio_mixer.o obj-750/./libretro-common/audio/audio_mix.o obj-750/./libretro-common/audio/audio_mixer.o obj-750/audio/drivers_resampler/cc_resampler.o obj-750/./libretro-common/compat/compat_getopt.o obj-750/./libretro-common/compat/compat_strcasestr.o obj-750/./libretro-common/compat/compat_strl.o obj-750/./libretro-common/formats/image_texture.o obj-750/cores/libretro-imageviewer/image_core.o obj-750/ui/drivers/ui_qt.o obj-750/ui/drivers/qt/gridview.o obj-750/ui/drivers/qt/qt_dialogs.o obj-750/ui/drivers/qt/qt_widgets.o obj-750/ui/drivers/qt/qt_playlist.o obj-750/ui/drivers/qt/qt_downloads.o obj-750/ui/drivers/qt/qt_options.o obj-750/libretro-db/bintree.o obj-750/libretro-db/libretrodb.o obj-750/libretro-db/query.o obj-750/libretro-db/rmsgpack.o obj-750/libretro-db/rmsgpack_dom.o obj-750/database_info.o obj-750/tasks/task_database.o obj-750/tasks/task_database_cue.o obj-750/menu/menu_explore.o obj-750/tasks/task_menu_explore.o obj-750/./libretro-common/audio/conversion/s16_to_float.o obj-750/./libretro-common/audio/conversion/float_to_s16.o obj-750/./libretro-common/audio/conversion/mono_to_stereo_float.o obj-750/./libretro-common/audio/conversion/stereo_to_mono_float.o obj-750/./libretro-common/formats/wav/rwav.o obj-750/menu/drivers/rgui.o obj-750/menu/drivers/materialui.o obj-750/menu/menu_screensaver.o obj-750/menu/menu_setting.o obj-750/menu/menu_driver.o obj-750/menu/cbs/menu_cbs_ok.o obj-750/menu/cbs/menu_cbs_cancel.o obj-750/menu/cbs/menu_cbs_select.o obj-750/menu/cbs/menu_cbs_start.o obj-750/menu/cbs/menu_cbs_info.o obj-750/menu/cbs/menu_cbs_left.o obj-750/menu/cbs/menu_cbs_right.o obj-750/menu/cbs/menu_cbs_deferred_push.o obj-750/menu/cbs/menu_cbs_scan.o obj-750/menu/cbs/menu_cbs_get_value.o obj-750/menu/cbs/menu_cbs_label.o obj-750/menu/cbs/menu_cbs_sublabel.o obj-750/menu/cbs/menu_cbs_title.o obj-750/menu/menu_displaylist.o obj-750/menu/menu_contentless_cores.o obj-750/tasks/task_overlay.o obj-750/led/drivers/led_overlay.o obj-750/gfx/drivers_font_renderer/stb.o obj-750/gfx/drivers_font_renderer/stb_unicode.o obj-750/./libretro-common/rthreads/rthreads.o obj-750/gfx/video_thread_wrapper.o obj-750/audio/audio_thread_wrapper.o obj-750/./libretro-common/formats/xml/rxml.o obj-750/./libretro-common/formats/logiqx_dat/logiqx_dat.o obj-750/deps/yxml/yxml.o obj-750/gfx/drivers_context/gfx_null_ctx.o obj-750/./libretro-common/glsym/rglgen.o obj-750/./libretro-common/glsym/glsym_gl.o obj-750/gfx/drivers/sdl2_gfx.o obj-750/gfx/common/sdl2_common.o obj-750/input/drivers/sdl_input.o obj-750/input/drivers_joypad/sdl_joypad.o obj-750/audio/drivers/sdl_audio.o obj-750/gfx/drivers_context/sdl_gl_ctx.o obj-750/./libretro-common/file/archive_file.o obj-750/./libretro-common/streams/trans_stream.o obj-750/./libretro-common/streams/trans_stream_pipe.o obj-750/./libretro-common/file/archive_file_7z.o obj-750/./deps/7zip/7zArcIn.o obj-750/./deps/7zip/7zBuf.o obj-750/./deps/7zip/7zCrc.o obj-750/./deps/7zip/7zCrcOpt.o obj-750/./deps/7zip/7zDec.o obj-750/./deps/7zip/CpuArch.o obj-750/./deps/7zip/Delta.o obj-750/./deps/7zip/LzFind.o obj-750/./deps/7zip/LzmaDec.o obj-750/./deps/7zip/Lzma2Dec.o obj-750/./deps/7zip/LzmaEnc.o obj-750/./deps/7zip/Bra.o obj-750/./deps/7zip/Bra86.o obj-750/./deps/7zip/BraIA64.o obj-750/./deps/7zip/Bcj2.o obj-750/./deps/7zip/7zFile.o obj-750/./deps/7zip/7zStream.o obj-750/./libretro-common/file/archive_file_zlib.o obj-750/./libretro-common/streams/trans_stream_zlib.o obj-750/./libretro-common/streams/rzip_stream.o obj-750/./libretro-common/formats/png/rpng.o obj-750/./libretro-common/formats/png/rpng_encode.o obj-750/./libretro-common/formats/bmp/rbmp.o obj-750/./libretro-common/formats/bmp/rbmp_encode.o obj-750/./libretro-common/formats/json/rjson.o obj-750/./libretro-common/formats/image_transfer.o obj-750/./libretro-common/formats/m3u/m3u_file.o obj-750/record/drivers/record_ffmpeg.o obj-750/cores/libretro-ffmpeg/ffmpeg_core.o obj-750/cores/libretro-ffmpeg/packet_buffer.o obj-750/cores/libretro-ffmpeg/video_buffer.o obj-750/./libretro-common/rthreads/tpool.o obj-750/tasks/task_decompress.o dll.o dllimport.o -lpthread -latomic -lpthread -lm -lm -lSDL2 -lz -lavcodec -lswresample -lz -lbz2 -latomic -lswresample -lavcodec -lavformat -lavutil -lswscale -lswresample -lavcodec -lswresample -lz -lbz2 -latomic -lavdevice -L. -athread=native -lpthread -static-libstdc++ -lQt6Core -lQt6Widgets -lQt6Network -lQt6Concurrent -lQt6Core -lQt6Widgets -lQt6Network -lQt6Concurrent -ldl -use-dynld

Go to top
Re: AmiQute Qt6 Tutorial
Just can't stay away
Just can't stay away


See User information
@TheMagicSN

The last item on the command line is a giveaway : Your project somehow tries to link dynamically, which is not supported by current standards.

What kind of build is this? I assume cmake, but you never know, so I ask. If you are using cmake, then you HAVE TO use /qt-cmake-amiga in place of any cmake command OR at least look in this (text) file and incorporate everything there, so nothing is missing from the configure step. THEN you will have to persistently convince the configuration to do a static build, otherwise nothing is going to work at present.

Also you need all the additional libraries for the build. Maybe that is just what you are asking. I am using a mixture of ready packaged libraries from the ExperimentalSDK in some earlier version combined with probably some selected up-to-date ones. If you give me enough time, I will share with you my entire library setup, I just have to figure out which parts to omit, so it doesn't fill up the entire living room.

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
It is just a plain (but very complex) makefile, not Cmake.

-ldl -use-dynld is NOT related to qt, but because of something else, you can ignore it.

I am not using configure. Everything done manually. Changing this would be MASSIVE work, to the point where I would say "not worth it".

>Also you need all the additional libraries for the build. Maybe >that is just what you are asking. I am using a mixture of ready >packaged libraries from the ExperimentalSDK in some earlier >version combined with probably some selected up-to-date ones. If >you give me enough time, I will share with you my entire library >setup, I just have to figure out which parts to omit, so it >doesn't fill up the entire living room.

Yes, it is what I am asking for. What -lwhatever combination do I need to do to statically link the correct Qt .a files.

Best regards,
Steffen

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
It is just a plain (but very complex) makefile, not Cmake.

-ldl -use-dynld is NOT related to qt, but because of something else, you can ignore it.

I am not using configure. Everything done manually. Changing this would be MASSIVE work, to the point where I would say "not worth it".

>Also you need all the additional libraries for the build. Maybe >that is just what you are asking. I am using a mixture of ready >packaged libraries from the ExperimentalSDK in some earlier >version combined with probably some selected up-to-date ones. If >you give me enough time, I will share with you my entire library >setup, I just have to figure out which parts to omit, so it >doesn't fill up the entire living room.

Yes, it is what I am asking for. What -lwhatever combination do I need to do to statically link the correct Qt .a files. The exact line (and order!!!!) of -lQt6Core -lQt6Widgets -lQt6Network etc. would be great, thanks

Best regards,
Steffen


Edited by TheMagicSN on 2025/8/9 16:20:00
Go to top
Re: AmiQute Qt6 Tutorial
Just can't stay away
Just can't stay away


See User information
@TheMagicSN

Hmm, strange. I have not seen this before. Well, one thing I am curious about is, if the authors intended it that way or if this is specific to the amiga port. Or maybe you created it entirely by youself, which is a massive achievement, but there are certain guiding rules for how these things are best managed. To subtract the amount of stress it would have, trying to maintain these things on non-standardized bases. Well, to tell you one thing - you need to adapt your build tools to compile and link against clib4. For this you might need a new compiler. If that is a longshot, then you are better off waiting for a little bit, until we can get you a hosted entity, that builds it for you in the correct way. Essentially, what you are looking for, is something that is being made and not quite ready yet. Hope you can entertain youself in the meantime. If you get anxious and rhubarb yourself over the terrain of interesting fortunes, then I would say - get core in last then network and gui. Then widgets. Then the rest. If you try and fail, then that's ok with me. We will get there. Cincerely. Good luck.

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
I am using the compiler from the docker images from George. I am using newlib. Never tried clib4 (but could). Just if nothing is mentioned I always assume it will be newlib

The code is from RetroArch, which I up to now compiled using the default GUI but it has a Qt6 GUI and I would like to try that one.

I got some missing symbols away but some are still in (some probably due to me using newlib and the Qt stuff using clib4). But let's talk for now just on the other stuff.

I got a lot of missing symbols of the RetroArch Qt6 Code. Here is what ChatGPT is telling me about it (he could as well be talking chinese - can you tell me what a MOC is ?)

--- snip ---

That _ZTV15ThumbnailWidget (vtable) undefined is classic missing MOC for a class with Q_OBJECT.

You’ve got lots of classes with Q_OBJECT (ThumbnailWidget, TreeView, MainWindow, …) declared inside ui_qt.cpp, not in separate headers. If you don’t run Qt’s meta-object compiler (moc) for that source, the linker can’t find the metaobject/vtable symbols → undefined vtable refs.

Two easy fixes (pick one):

A) Include the generated moc at the end of the .cpp
Add this as the very last line of ui_qt.cpp:

cpp
Kopieren
Bearbeiten
#include "ui_qt.moc"
Then generate it before compiling:

sh
Kopieren
Bearbeiten
/path/to/qt6/bin/moc ui_qt.cpp -o ui_qt.moc
(Do the same for any other .cpp that contains Q_OBJECT in class definitions.)

B) Build moc outputs as separate objects
In your Makefile, add rules like:

make
Kopieren
Bearbeiten
QT_MOC := /path/to/qt6/bin/moc
INC := -I. -I/path/to/qt/include # add your include paths/defines

obj-750/moc_ui_qt.cpp: ui_qt.cpp
$(QT_MOC) $(INC) ui_qt.cpp -o $@

obj-750/moc_qt_widgets.cpp: qt/qt_widgets.h
$(QT_MOC) $(INC) qt/qt_widgets.h -o $@

OBJS += obj-750/moc_ui_qt.o obj-750/moc_qt_widgets.o
(Compile those .cpp into .o and add to your link line.)

Also double-check any other headers with Q_OBJECT (e.g. qt/qt_widgets.h) get their own moc_*.cpp generated/linked. Without the moc objects, you’ll keep seeing vtable/typeinfo undefineds for those classes.

--- snap ---

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
I also still got "/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Core.a(qrandom.cpp.o): In function `_ZN16QRandomGenerator15SystemGenerator8generateEPjS1_':
qrandom.cpp:(.text._ZN16QRandomGenerator15SystemGenerator8generateEPjS1_+0xa4): undefined reference to `getentropy'
qrandom.cpp:(.text._ZN16QRandomGenerator15SystemGenerator8generateEPjS1_+0xc8): undefined reference to `getentropy'
qrandom.cpp:(.text._ZN16QRandomGenerator15SystemGenerator8generateEPjS1_+0xd8): undefined reference to `getentropy'
qrandom.cpp:(.text._ZN16QRandomGenerator15SystemGenerator8generateEPjS1_+0x120): undefined reference to `getentropy'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Core.a(qrandom.cpp.o): In function `_Z23qt_initial_random_valuev':
qrandom.cpp:(.text._Z23qt_initial_random_valuev+0x5c): undefined reference to `getentropy'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Core.a(qlockfile_unix.cpp.o): In function `_ZN16QLockFilePrivate15removeStaleLockEv':
qlockfile_unix.cpp:(.text._ZN16QLockFilePrivate15removeStaleLockEv+0xe8): undefined reference to `flock'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Core.a(qlockfile_unix.cpp.o): In function `_ZN16QLockFilePrivate11tryLock_sysEv':
qlockfile_unix.cpp:(.text._ZN16QLockFilePrivate11tryLock_sysEv+0xe8): undefined reference to `flock'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Widgets.a(qapplication.cpp.o): In function `_ZN19QApplicationPrivate4initEv':
qapplication.cpp:(.text._ZN19QApplicationPrivate4initEv+0x30): undefined reference to `_Z21qInitResources_qstylev'
qapplication.cpp:(.text._ZN19QApplicationPrivate4initEv+0x34): undefined reference to `_Z26qInitResources_qmessageboxv'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Widgets.a(qfiledialog.cpp.o): In function `_ZN18QFileDialogPrivate13maxNameLengthERK7QString':
qfiledialog.cpp:(.text._ZN18QFileDialogPrivate13maxNameLengthERK7QString+0x58): undefined reference to `pathconf'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Network.a(qnativesocketengine_unix.cpp.o): In function `_ZN26QNativeSocketEnginePrivate11nativeWriteEPKcx':
qnativesocketengine_unix.cpp:(.text._ZN26QNativeSocketEnginePrivate11nativeWriteEPKcx+0xf4): undefined reference to `sigaction'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Network.a(qhostinfo_unix.cpp.o):(.got2+0x2c): undefined reference to `res_init'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Network.a(qhostinfo_unix.cpp.o):(.got2+0x34): undefined reference to `__res_state'" and a lot of undefined symbols named uenum_... and ucal_... called from somewhere in the Qt6 Libs. This and the .moc thing is it I think mainly.

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
Ah there was still

qlogging.cpp:(.text._ZL28backtraceFramesForLogMessagei+0x108): undefined reference to `backtrace'
qlogging.cpp:(.text._ZL28backtraceFramesForLogMessagei+0x280): undefined reference to `backtrace_symbols'


and

/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Core.a(qresource.cpp.o): In function `_ZN9QResource18unregisterResourceERK7QStringS2_':
qresource.cpp:(.text._ZN9QResource18unregisterResourceERK7QStringS2_+0x538): undefined reference to `munmap'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Core.a(qresource.cpp.o): In function `_ZN24QDynamicFileResourceRoot12registerSelfERK7QString':
qresource.cpp:(.text._ZN24QDynamicFileResourceRoot12registerSelfERK7QString+0x1e8): undefined reference to `mmap'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Core.a(qresource.cpp.o): In function `_ZN9QResource16registerResourceERK7QStringS2_':
qresource.cpp:(.text._ZN9QResource16registerResourceERK7QStringS2_+0x340): undefined reference to `munmap'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Core.a(qdatetime.cpp.o): In function `_ZL9qt_mktimeP5QDateP5QTimePN16QDateTimePrivate14DaylightStatusEP7QStringPb':
qdatetime.cpp:(.text._ZL9qt_mktimeP5QDateP5QTimePN16QDateTimePrivate14DaylightStatusEP7QStringPb+0x2bc): undefined reference to `__get_tzname'
qdatetime.cpp:(.text._ZL9qt_mktimeP5QDateP5QTimePN16QDateTimePrivate14DaylightStatusEP7QStringPb+0x3fc): undefined reference to `__get_tzname'
/opt/ppc-amigaos/lib/gcc/ppc-amigaos/11.3.0/../../../../ppc-amigaos/lib/libQt6Core.a(qdatetime.cpp.o): In function `_ZN15QDateTimeParser23startsWithLocalTimeZoneE11QStringView':
qdatetime.cpp:(.text._ZN15QDateTimeParser23startsWithLocalTimeZoneE11QStringView+0x68): undefined reference to `__get_tzname'

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
I think I got an explanation on the moc stuff from ChatGPT now which I think I understand. Will try to fix this then Obviously the need to recompile for clib4 is still a big step. But one step after the other I guess

Ah there are still some more linker lib issues:

qdecompresshelper.cpp:(.text._ZN17QDecompressHelper10readBrotliEPci+0x128): undefined reference to `BrotliDecoderDecompressStream'
qdecompresshelper.cpp:(.text._ZN17QDecompressHelper10readBrotliEPci+0x15c): undefined reference to `BrotliDecoderDestroyInstance'
qdecompresshelper.cpp:(.text._ZN17QDecompressHelper10readBrotliEPci+0x2b8): undefined reference to `BrotliDecoderHasMoreOutput'
qdecompresshelper.cpp:(.text._ZN17QDecompressHelper10readBrotliEPci+0x334): undefined reference to `BrotliDecoderHasMoreOutput'
qdecompresshelper.cpp:(.text._ZN17QDecompressHelper10readBrotliEPci+0x34c): undefined reference to `BrotliDecoderTakeOutput'
qdecompresshelper.cpp:(.text._ZN17QDecompressHelper10readBrotliEPci+0x3b8): undefined reference to `BrotliDecoderHasMoreOutput'
qdecompresshelper.cpp:(.text._ZN17QDecompressHelper10readBrotliEPci+0x528): undefined reference to `BrotliDecoderGetErrorCode'
qdecompresshelper.cpp:(.text._ZN17QDecompressHelper10readBrotliEPci+0x52c): undefined reference to `BrotliDecoderErrorString'

Appearently this is a lib called "Brotli Decoder Lib" and this is caused by something inside the Qt6 Libs. Where they forgotten in the archive ?

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
Got the moc stuff handled at least ;)

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
I reached some progress on compiling RetroArch with Qt6 Amiga Support.

Still the following issues (I BTW recompiled RetroArch using clib4):

- A lot of ICU error messages, so it looks I need a Qt6 build not using ICU, can someone provide this ? Alternatively if you have ICU Libs for OS4 that would also fix it.
- libexecinfo.a would be needed (else the linker complains on backtrace and backtrace_symbols, pulled in by Qt6) -> This one I solved by stubbing out backtrace and backtrace_symbols, so I do not really need anything here.
- I need a libSDL2.a compiled by clib4 (does it exist ?)

That's it basically.

Thanks in advance


Edited by TheMagicSN on 2025/8/9 22:15:36
Edited by TheMagicSN on 2025/8/9 22:35:49
Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
@TheMagicSN
Quote:
I need a libSDL2.a compiled by clib4 (does it exist ?)

Here's what you need to do when using Docker from @walkero. It should work on what you have:
https://github.com/AmigaLabs/clib4/wik ... 4-apt-packages-repository

Alternatively, if you need libSDL2.a
extract from libSDL2-2.30.1_amd64.deb

Go to top
Re: AmiQute Qt6 Tutorial
Not too shy to talk
Not too shy to talk


See User information
Thx. I was also told icu exists for os4. Will try everything today or tomorrow

Go to top
Re: AmiQute Qt6 Tutorial
Just can't stay away
Just can't stay away


See User information

Go to top

  Register To Post
(1) 2 »

 




Currently Active Users Viewing This Thread: 1 ( 0 members and 1 Anonymous Users )




Powered by XOOPS 2.0 © 2001-2024 The XOOPS Project