ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Reaction mit GCC | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
29.12.2002, 04:56 Uhr Saint Posts: 68 Nutzer |
Hi! Ich versuche mich hier seit einiger Zeit an Reaction Programmierung in C mit GCC V2.95.3 als Compiler. Zum erstellen der GUI habe ich Reactor benutzt. Ich stehe jetzt vor zwei Problemen die mich noch irre machen: 1. Wenn ich irgendwo in Reactor einen Text angebe, sei es nur ein "Test" auf einem Button, spuckt GCC beim linken eine Fehlermeldung aus. Ich habe dem Knopf die Locale ID "btButton_1" gegeben, die Fehlermeldung ist: gui.o(.data+0x26a): undefined reference to 'btButton_1' gui.o(.data+0x26e): undefined reference to 'btButton_1_STR' Wenn ich nirgendwo in der GUI Strings benutze linkt er es normal durch. 2. Das WMHI_GADGETUP Event scheint sich nicht abfragen zu lassen. Ich habe bisher nur eine mehr als simple Gui mit einem Button und einem String gadget gemacht, aber ich kann auf den Button klicken wie ich möchte, es kommt kein WMHI_GADGETUP. WMHI_CLOSEWINDOW wird korrekt erkannt, auf andere events habe ich es noch nicht getestet. Irgendwie bin ich ratlos, besonders weil der einzige Workshop den ich zu Reaction finden konnte (in einer AmigaAktuell) ein ganz anderes System der Gui Erstellung benutzt (direkt im Quelltext statt über ein gelinktes Objekt File), und sämtliche Beispiele für StormC gedacht sind. Währe klasse wenn mir jemand helfen könnte, ich möchte nicht ewig an Reaction zu knabbern haben... MfG Markus Castro [ - Antworten - Zitieren - Direktlink - ] |
29.12.2002, 17:36 Uhr cygnusEd Posts: 104 Nutzer |
Hallo Saint! Zu 1: Welche Dateien hast Du in Deinem Projekt? Hast Du mithilfe von CatComp aus der von Reactor erzeugten Datei "xxx.cd" die zwei Dateien "xxxCD.h" und xxxCD.asm" erzeugt? Und wenn ja, hast Du einen globalen #define "CATCOMP_ARRAY" erzeugt? Wenn nicht, dann werden keine Texte und keine TextIDs erzeugt. Schau mal in die Datei "xxxCD.asm" und Du wirst sehen warum. Zu 2: Hast Du in Reactor für jedes Gadget die Tags "GA_ID" und "GA_RelVerify" erzeugt? Sonst werden nämlich für dieses Gadget keine Messages erzeugt. Grüße CygnusEd [ - Antworten - Zitieren - Direktlink - ] |
29.12.2002, 20:43 Uhr Saint Posts: 68 Nutzer |
Zitat: my-gui.c, Gui.o, Gui.res, Gui.h und Gui.cd Zitat: Nein, hatte ich nicht. Ich habe jetzt die Header Datei erzeugt und includet, benötige ich das Assembler File auch noch? Wie ich das sehe sollte das .h File ausreichen. Zitat: Man, was man alles beachten muß....hab den define erzeugt, das Header File includet, aber die Fehlermeldung beim linken bleibt. Zitat: Nein, davon wußte ich nichts. Hab es so gemacht und jetzt funktioniert zumindest das schonmal :-) Währ doch gelacht wenn wir das andere nicht auch noch hinbekommen, liegt im Endeffekt bestimmt wieder an irgendwas total dummen an irgendeiner anderen Stelle... Riesengroßen Dank jedenfalls schonmal für deine Hilfe, ist lange her dass mir in einem Forum geholfen wurde =) MfG Markus [ - Antworten - Zitieren - Direktlink - ] |
30.12.2002, 11:18 Uhr cygnusEd Posts: 104 Nutzer |
Hi Saint! Ist doch schon mal ein Erfolg Leider muß das asm-File auch noch eingebunden werden. Das von Reactor erzeugte object-file benötigt die darin enthaltenen Strings und IDs. Nur noch mal zur Sicherheit. Um die beiden Dateien "guiCD.h" und "guiCD.asm" zu erzeugen, muß catcomp folgendermaßen aufgerufen werden: catcomp gui.cd CFILE guiCD.h ASMFILE guiCD.asm XDEF Zugegebenermaßen war ich nicht ganz korrekt. Für den C-Code benötigst Du den #define "CATCOMP_NUMBERS" und für den ASM-Code die Definition "CATCOMP_ARRAY SET 1". Dann müßte es gehen. CU CygnusEd [ - Antworten - Zitieren - Direktlink - ] |
30.12.2002, 19:19 Uhr Saint Posts: 68 Nutzer |
Zitat: Ich versteh zwar nicht viel von Assembler, aber die Definitionen in der .s und der .h Datei sehen mir relativ gleich aus. Davon abgesehen hab ich es auch mit viel rumprobieren nicht geschafft, das Assembler File einzubinden. Der gcc Assembler hört nämlich fast nicht mehr auf mit den Fehlermeldungen :-( CatComp kann auch ein Objekt File erzeugen wie ich gesehen habe, aber auch damit Pustekuchen. Kannst du mir sagen was ich ganz genau im einzelnen machen muß, und wie ich GCC dann aufrufen muß? Zitat: Der #define CATCOMP_NUMBERS wird im guicd.h File automatisch gesetzt, wenn der CATCOMP_ARRAY definiert ist, daran lag es also auch nicht... Wegen solchen blöden Anlaufschwierigkeiten habe ich mich jahrelang vor C gedrückt Arexx war so viel einfacher... Achja, ich hab noch ein bißchen rumprobiert. Meine Überlegung war den Buttons ihre Texte nach Programmstart zu geben, solange ich das Problem noch nicht gelöst habe. Ich setze also den Gadgettext mit SetAttrs(gadlist[gadget],GA_Text,pl,TAG_DONE); SetGadgetAttrs((Gadget *)gadlist[gadget],Fenster,NULL,GA_Text,text,TAG_DONE); Aber das Gadget wird erst mit dem Text angezeigt, wenn das Fenster z.b. durch Vergrößern neugezeichnet wird. Eine Ahnung woran das liegen könnte? MfG Markus C. [ - Antworten - Zitieren - Direktlink - ] |
30.12.2002, 19:53 Uhr cygnusEd Posts: 104 Nutzer |
Hallo Saint, Tja, das passiert, wenn ein StormC-Benutzer einem GCC-Benutzer etwas erklärt Bei StormC wird der im Projekt eingebundene ASM-Code automatisch mit dem PhxAss-Assembler übersetzt. Bei GCC kenne ich mich nicht so aus. Anscheinend hat GCC Probleme mit dem ASM-Code von catcomp. Vielleicht hilft es ja, diesen Code zuvor mit einem Assembler in eine Object-Datei umzuwandeln und dann hinzuzulinken Das mit der Idee, die Texte nachträglich zu setzen würde zwar klappen, würde aber sehr viel Mehrarbeit bedeuten. Ich weiß, daß es Dir nicht direkt weiterhilft, aber wie wär's mit StormC 3.0? Ist auf der Developer CD 2.1 zu finden und ist in der Bedienung meiner Meinung nach viel einfacher. Die Developer-CD ist - wie ich finde - sowieso ein Muß. Grüße CygnusEd [ - Antworten - Zitieren - Direktlink - ] |
30.12.2002, 22:06 Uhr Saint Posts: 68 Nutzer |
Zitat: Habs hier eben mit Phxass versucht, der spuckt auch einige Fehler aus. Zitat: Außerdem bleibt noch das Refresh Problem...da weißt du nicht zufällig weiter? Zitat: Hab die CD hier, aber StormC ist nicht so mein Fall. Ich hab mich jetzt schon einigermaßen an GCC gewöhnt, und wenn ich später mal z.b. auf MorphOS umsteigen will bräuchte ich sowieso GCC. Habs auch eben mal mit StormC probiert, an meinem Programmen meckert er bei 6 Sachen wo GCC nur Warnungen ausspuckt, und das Assembler File kriegt er auch nicht übersetzt :-( Du weißt nicht zufällig nen guten Workshop zu Mui? MfG Markus [ - Antworten - Zitieren - Direktlink - ] |
31.12.2002, 17:13 Uhr cygnusEd Posts: 104 Nutzer |
Hallo Saint, > Habs hier eben mit Phxass versucht, der spuckt auch einige Fehler aus. Ist ja seltsam - habe noch nie probleme mit dem ASM-File gehabt. Wenn Du möchtest, kannst Du es mir ja mal per email schicken (eschwan@rz-online.de). > Außerdem bleibt noch das Refresh Problem...da weißt du nicht zufällig weiter? Mit der Intuition-Funktion RefreshGList() geht's: Object *WindowObject; struct Window *IWindow; ... DoMethod(WindowObject, WM_OPEN); /* Reactor-Fenster öffnen */ ... GetAttr(WINDOW_Window, WindowObject, (ULONG *) &IWindow); /* Intui-Window holen */ ... RefreshGList(IWindow->FirstGadget, IWindow, NULL, -1); /* Komplettes Fenster refreshen */ > Du weißt nicht zufällig nen guten Workshop zu Mui? Leider nicht - bin ein Reaction-Fan. Aber kennst Du den Reaction-Workshop vom Amiga-Magazin? Zu finden unter http://www.amiga-magazin.de/magazin/alteausgaben.html in den Ausgaben 12/99 bis 2/00. Wenn Du Beispiel-Code benötigst, dann lade doch aus dem Aminet "FlashMandelWOS" herunter, das ich zusammen mit Dino Papararo entwickele : gfx/fract/FlashMandelWOS.lha Die Dateien mit "...React.c" am Ende sind für das Reaction-Handling verantwortlich. mfg CygnusEd [ - Antworten - Zitieren - Direktlink - ] |
02.01.2003, 14:16 Uhr Holger Posts: 8116 Nutzer |
Zitat:Das Setzen der Attribute muß nicht zwangsläufig das Gadget neuzeichnen. Wenn der Rückgabewert ungleich 0 ist, solltest Du einen manuellen Refresh auslösen. code:Das hält Dir auch die Möglichkeit offen, zuerst mehrere Gadgets zu manipulieren und dann alle in einem Refresh neuzuzeichen.if( SetGadgetAttrs((Gadget *)gadlist[gadget],Fenster,NULL,GA_Text,text,TAG_DONE) ) RefreshGList((Gadget *)gadlist[gadget], Fenster, NULL, 1); mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
03.01.2003, 10:55 Uhr cygnusEd Posts: 104 Nutzer |
Hallo Saint Ich wollte nur mal fragen, ob die email angekommen ist Grüße CygnusEd [ - Antworten - Zitieren - Direktlink - ] |
03.01.2003, 16:04 Uhr Saint Posts: 68 Nutzer |
Hi! Jo, die Mail ist angekommen, Riesendankeschön! Nach einigem Rumprobieren mit StormC und phxass bin ich (nach über einer Stunde :Þ) auch endlich dahintergekommen, wieso der bei mir mit dem Assembler File probleme hatte. PhxAss hat ganz einfach das types.i include nicht gefunden. Bei meiner GCC Installation sind keine Assembler Includes dabei, aber ich dachte von StormC aus gestartet hätte er schon das korrekte Include finden müßen. Naja, manuell gestartet und IncludePath auf die Developer CD gelenkt und plötzlich geht es und auch GCC ist wunderbar happy mit dem Objektfile :-) Danke auch für deine Korrekturen, ich denke mal die Dreher mit dem Intuition/Reaction Window waren der Grund für sporadische Abstürze. Jetzt funzt aber alles so, wie es soll MfG Markus C. [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Reaction mit GCC | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |