Heute wollte ich mal eine Pause von den Übungen aus dem Buch - C++ für Kids - einlegen um mich mal dem erstellen von ReAction-GUIs zu widmen. Scheinbar keine einfache Aufgabe...
Nachdem ich mir zunächst so einige Webseiten im Netz angesehen habe u.a. wiki.amigaos.net habe ich sodenn ein paar Codebeispiele aus dem SDK probiert. Durch Copy&Paste habe ich den Quellcode in Codebench kopiert und dann kompiliert. Der Compiler hat bei jedem Code Fehler angezeigt.
Jetzt frage ich mich zunächst, muss ich in Codebench noch eine andere Einstellung vornehmen?
Ich frage mich auch, lassen sich ReAction-GUIs überhaupt mit C++ (und seinem Compiler) umsetzen (auch was die zugelinkten Includes angeht)?
Sind die Beispielcodes vielleicht nicht mehr ganz kompatibel zum neuen SDK?
Hat jemand einen kleinen Source der funktioniert?
Oder hat @Cyborg recht, wenn er sagt, dass mir C++ auf dem AMIGA mehr Ärger als Nutzen einbringt?
ReAction GUI in C++
Moderator: OS4Welt-Team
- Cyborg
- AmigaOS Entwickler
- Beiträge: 3655
- Registriert: 28. September 2009 11:10
- Hat sich bedankt: 24 Mal
- Danksagung erhalten: 57 Mal
Re: ReAction GUI in C++
Natürlich habe ich recht
Dennoch ist es selbstverständlich möglich, ReAction-Programme in C++ zu schreiben. Der von mir inzwischen betreute AutoDocViewer ist z.B. in C++ geschrieben. Die Beispiel-Quellen aus dem SDK funktionieren. Wenn Sie das nach Deiner Kopieraktion nicht mehr tun, liegt der Fehler nicht bei ihnen
Gibt doch mal ein konkretes Beispiel.
Dennoch ist es selbstverständlich möglich, ReAction-Programme in C++ zu schreiben. Der von mir inzwischen betreute AutoDocViewer ist z.B. in C++ geschrieben. Die Beispiel-Quellen aus dem SDK funktionieren. Wenn Sie das nach Deiner Kopieraktion nicht mehr tun, liegt der Fehler nicht bei ihnen
Gibt doch mal ein konkretes Beispiel.
-
- Beiträge: 74
- Registriert: 24. Dezember 2016 17:10
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 2 Mal
Re: ReAction GUI in C++
@ThorstenS
One of big today's examples of how looks like Reaction based app writeen on C++ are spotless debugger, code is here : https://github.com/alfkil/Spotless (see Reaction dir for)
One of big today's examples of how looks like Reaction based app writeen on C++ are spotless debugger, code is here : https://github.com/alfkil/Spotless (see Reaction dir for)
-
- Beiträge: 330
- Registriert: 24. Oktober 2014 15:51
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 8 Mal
Re: ReAction GUI in C++
Gerne!
Nehmen wir den Code von
SDK:Examples/GUI/Window/Window.c
Codebench ist geöffnet und ich füge den Quelltext von - Window.c - über Insert text from file... ein. Nun lasse ich kompilieren und erhalte folgende Fehlermeldung:
Ein Problem in Zeile 46. Also öffne ich jetzt den AutoDocViewer und rufe mir das - exec.doc - auf und suche nach - AllocSysObject -. Ich schaue mir das Beispiel in dem Text an und sehe, dass die Formatierung in "meinem" (übernommenen) Code falsch ist.
Aktuell steht dort:
Code: Alles auswählen
struct MsgPort *AppPort = IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE);
Code: Alles auswählen
struct MsgPort *AppPort;
AppPort = (struct MsgPort *)IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE);
Damit kann ich jetzt so gar nichts anfangen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- FlynnTheAvatar
- Beiträge: 82
- Registriert: 23. Juni 2022 11:19
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 6 Mal
Re: ReAction GUI in C++
Hi Thorsten,
das Beispiel muss mit der libauto.a gelinkt werden. Das steht ganz oben in der Datei. Also müsstest du -lauto zu den Linker-Flags hinzufügen.
das Beispiel muss mit der libauto.a gelinkt werden. Das steht ganz oben in der Datei. Also müsstest du -lauto zu den Linker-Flags hinzufügen.
AmigaOne X5000/20, 2.0 Ghz, 8 GB RAM, 240 + 120 GB SSD, Radeon RX 550, Audigy FX, SIL 3114
Amiga 500, ACA 500+, ACA1221LC, AmigaOS 1.3 + 3.2.2.1
Amiga 500, Checkmate 1500, Vampire 500V2, AmigaOS 3.2.1 (WIP)
Amiga 500, ACA 500+, ACA1221LC, AmigaOS 1.3 + 3.2.2.1
Amiga 500, Checkmate 1500, Vampire 500V2, AmigaOS 3.2.1 (WIP)
-
- Beiträge: 330
- Registriert: 24. Oktober 2014 15:51
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 8 Mal
Re: ReAction GUI in C++
DANKE!FlynnTheAvatar hat geschrieben: ↑21. November 2022 15:44
das Beispiel muss mit der libauto.a gelinkt werden. Das steht ganz oben in der Datei. Also müsstest du -lauto zu den Linker-Flags hinzufügen.
-lauto das war es tatsächlich. Ich freue mich!! Könnte mich aber auch in den Arsch treten, dass ich nicht drauf gekommen bin. Wahrscheinlich deshalb, weil ich dachte, dass das Linker-Argument -lstdc++ ausreichend sein würde. Da... die Quelltexte vor allem in der Sprache "C" vorliegen und nicht "C++". Okay, jetzt weiß ich es. Also nochmals DANKESCHÖN!
Heute war, was das angeht, ein guter Tag. Der Lust auf mehr macht...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- Cyborg
- AmigaOS Entwickler
- Beiträge: 3655
- Registriert: 28. September 2009 11:10
- Hat sich bedankt: 24 Mal
- Danksagung erhalten: 57 Mal
Re: ReAction GUI in C++
Schön
Was den ersten "Fehler" angeht, das kommt daher, weil die Beispiele alle schon ein paar Jährchen auf dem Buckel haben und damals der GCC noch nicht standardmäßig über implizite Casts gemeckert hat. Die neueren und insbesondere das C++-Frontend sehen das deutlich kritischer und spucken Warnings, die dann durch -Werror zum Fehler werden. Ist sinnvoll, aber macht es mit älterem Code halt etwas umständlicher.
Was den ersten "Fehler" angeht, das kommt daher, weil die Beispiele alle schon ein paar Jährchen auf dem Buckel haben und damals der GCC noch nicht standardmäßig über implizite Casts gemeckert hat. Die neueren und insbesondere das C++-Frontend sehen das deutlich kritischer und spucken Warnings, die dann durch -Werror zum Fehler werden. Ist sinnvoll, aber macht es mit älterem Code halt etwas umständlicher.
Re: ReAction GUI in C++
Hat nix mit C vs C++ zu tun.ThorstenS hat geschrieben: ↑21. November 2022 15:58
-lauto das war es tatsächlich. Ich freue mich!! Könnte mich aber auch in den Arsch treten, dass ich nicht drauf gekommen bin. Wahrscheinlich deshalb, weil ich dachte, dass das Linker-Argument -lstdc++ ausreichend sein würde. Da... die Quelltexte vor allem in der Sprache "C" vorliegen und nicht "C++". Okay, jetzt weiß ich es. Also nochmals DANKESCHÖN!
libstdc++ und libauto sind Funktionsbibliotheken für unterschiedliche Zwecke.
libstdc++ ist die standard C++ Laufzeitumgebung, und beinhaltet z.B. den Code für sowas für cout.
libauto kommt von AmigaOS und beinhaltet Code der automatisch so ziemlich alle Libaries und deren Interfaces beim Programmstart öffnet und beim beenden wieder schließt. Es findet keine Versionsprüfung der Libraries statt, das sollte man in einem echten Programm nachholen oder am besten gleich alles was man braucht selber öffnen und schließen.
Wenn du keine Funktionen benutzt die in einer Funktionsbibliothek sind kannst du die beim Linken weglassen.