German Amiga Community Foren-Übersicht German Amiga Community
The new home for all Amiga Users out there !
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin   Chat 

C: Intuition-Fenster erzeugen

 
Neues Thema eröffnen   Neue Antwort erstellen    German Amiga Community Foren-Übersicht -> Amiga Programmierung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
dexter



Anmeldedatum: 28.10.2004
Beiträge: 10977
Wohnort: Oldenburg ____________ Ministerium für außergewöhnlichen, intergalaktischen Nonsens

BeitragVerfasst am: Di, 12.11.2019 19:59    Titel: C: Intuition-Fenster erzeugen Antworten mit Zitat

Ich finde leider nichts, was mir weiterhilft und hoffe hier eventuell auf Hilfe.

Ich habe vbcc installiert und grundlegend klappt das kompilieren und linken von C-Code damit prima, sofern dieser den Standard-I/O anspricht – also die Konsole. Nun wollte ich aber mal schauen wie andere GUI-Programmierung damit angehen und habe folgende Seite dafür benutzt: http://www.pjhutchison.org/tutorial/windows.html

Dort gibt es relativ weit am Anfang folgendes Snippet:

Code:
#include <proto/intuition.h>
#include <proto/dos.h>
#include <intuition/intuition.h>

int main() {
   struct Window *myWindow;
   struct NewWindow winlayout = {
      20, 20,
      200, 150,
      0,1,
      IDCMP_CLOSEWINDOW,
      WFLG_SIZEGADGET | WFLG_DRAGBAR | WFLG_DEPTHGADGET |    WFLG_CLOSEGADGET | WFLG_ACTIVATE,
      NULL, NULL,
      "My Window",
      NULL,NULL,
      0,0,
      600,400,
      WBENCHSCREEN
   };

   myWindow = OpenWindow(&winlayout);
   Delay(200);
   if (myWindow) CloseWindow(myWindow);
   return(0);
}


Die Erklärungen auf der Seite sind verständlich, nur führt dieser Code bei mir zu der nachfolgenden Fehlermeldung, wenn ich ihn mit vc win.c -o win kompilieren und linken lassen möchte ...



Ich habe mich (mit Absicht) etwas aufs Glatteis begeben, weil ich einfach drauf los mich an das Beispiel geklammert habe. Einen besseren Einstieg konnte ich sonst nicht finden, daher ab ins kalte Wasser. Wink

Für mich sieht das so aus, als müsste ich zuerst IntuitionBase und Delay definieren, oder sehe ich das falsch?

Oder liegt es am NDK? Ich habe OS 3.1.4.1 und das NDK 3.9 drauf. Beim installieren des VBCC-Targets wurde ich nach einem Header-Verzeichnis gefragt, da habe ich auf den Ort verwiesen, der im NDK 3.9 Ordner liegt.

Braucht man das NDK eigentlich unbedingt noch heutzutage oder bringt vbcc alles nötige im Amiga-Port mit?

***
_________________

[ WinUAE / BC / GOG / itch ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
thomas



Anmeldedatum: 31.10.2004
Beiträge: 841

BeitragVerfasst am: Di, 12.11.2019 22:49    Titel: Antworten mit Zitat

Nun, Delay solltest du richtig schreiben, dann findet er das dauch. Eine Funktion namens Dealy gibt es meines Wissens nicht.

IntuitionBase ist notwendig, um Funktionen der intuiiton.librqary zu benutzen. Libraries muss man normalerweise mit OpenLibrary öffnen und am Programmende wieder schließen.

Um sich das zu sparen, gibt es eine Linker-Lib, die alle deklarierten Library-Bases automatisch öffnet (sofern bekannt). Diese muss man bei VBCC aber explizit angeben:

vc win.c -o win -lauto


VBCC ist eher sparsam mit Warnungen. Wenn du die entsprechende Warnung eingeschaltet hättest, hätte dich bereits der Compiler über die unbekannte Funktion Dealy informaiert und nicht erst der Linker.

Man kann zwar mit -warn=-1 alle Warnungen einschalten, aber das ist dann zuviel des guten, denn dann wird man auch bei den Include-Files aus dem NDK vor allem möglichen gewarnt.

Meine Compile-Zeile für VBCC sieht meistens so aus:

vc +aos68k -c99 -warn=-1 -dontwarn=81 -dontwarn=163 -dontwarn=164 -dontwarn=166 -dontwarn=167 -dontwarn=168 -dontwarn=306 -dontwarn=307 win.c -o win -lamiga -lauto -ldebug

Da man das natürlich nicht immer eintippen möchte, habe ich Make installiert und in meinem Source-Verzeichnis ein Makefile mit diesem Inhalt:

Code:

CC      = vc +aos68k
CFLAGS  = -c99 -warn=-1 -dontwarn=81 -dontwarn=163 -dontwarn=164 -dontwarn=166 -dontwarn=167 -dontwarn=168 -dontwarn=306 -dontwarn=307
LDFLAGS =
LDLIBS  = -lamiga -lauto -ldebug


Dann muss ich nur noch

make win

eingeben, um das Programm zu kompilieren.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dexter



Anmeldedatum: 28.10.2004
Beiträge: 10977
Wohnort: Oldenburg ____________ Ministerium für außergewöhnlichen, intergalaktischen Nonsens

BeitragVerfasst am: Mi, 13.11.2019 09:29    Titel: Antworten mit Zitat

Ach! *** Ich war müde gestern Abend. Den Quelltext bin ich wirklich drei mal durchgegangen und da ist es mir nicht aufgefallen. Very Happy

-lauto und -lamiga hatte ich probiert, allerdings ohne die intuition.library zu öffnen. *** Das heißt ich muss vorher in der main() mit struct IntuitionBase *IntuitionBase = OpenLibrary("intuition.library", 37L) angeben, richtig?

make packe ich heute Abend draufund erstelle mir dann so ein Makefile wie du es hast. Das ist sehr gut! Smile

Vielen Dank schon mal für die Hilfe! Smile
_________________

[ WinUAE / BC / GOG / itch ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
thomas



Anmeldedatum: 31.10.2004
Beiträge: 841

BeitragVerfasst am: Mi, 13.11.2019 10:29    Titel: Antworten mit Zitat

Nein. Du solltest wirklich lernen sorgältig zu lesen und zu verstehen.

Ich habe geschrieben, normalerweise muss man Libraries mit OpenLibrary öffnen. Aber man kann sich das sparen, indem man -lauto benutzt, denn die macht das automatisch.

Du solltest auch auf die Fehlermeldungen achten, die du bekommst oder eben nicht. Mit -lauto gehen die IntuitionBase-Fehler weg, aber der Dealy-Fehler natürlich nicht. Wenn du einen Teilerfolg nicht als solchen erkennst, kommst du nicht voran.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dexter



Anmeldedatum: 28.10.2004
Beiträge: 10977
Wohnort: Oldenburg ____________ Ministerium für außergewöhnlichen, intergalaktischen Nonsens

BeitragVerfasst am: Mi, 13.11.2019 10:50    Titel: Antworten mit Zitat

Ach so. Ich bin hier auf der Arbeit, daher ist das Lesen nur nebenbei möglich. Wink

Vielen Dank, ich schaue es mir heute Abend an. Smile
_________________

[ WinUAE / BC / GOG / itch ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dexter



Anmeldedatum: 28.10.2004
Beiträge: 10977
Wohnort: Oldenburg ____________ Ministerium für außergewöhnlichen, intergalaktischen Nonsens

BeitragVerfasst am: Do, 14.11.2019 22:03    Titel: Antworten mit Zitat

Ich wollte nur fix Feedback geben: Erfolg! Smile

Vielen Dank, das motiviert weiter zu machen. Smile

Ich musste nur -debug statt -ldebug angeben und im Makefile habe ich die -dontwarn Angaben zusammenhefasst, also ...

-dontwarn=81,163,164,166,167,168,306,307

Weißt du ob die make Version 3.8.2 im Aminet die aktuellste für m68k-Amigas ist?
_________________

[ WinUAE / BC / GOG / itch ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    German Amiga Community Foren-Übersicht -> Amiga Programmierung Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht teilnehmen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de