|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
hellobello
Anmeldungsdatum: 21.09.2012 Beiträge: 1
|
Verfasst am: 21.09.2012, 00:12 Titel: gtk und win7 |
|
|
Hallo, ich versuche gerade meine ersten Schritte mit GUI, habe jetzt ein paar gtk tutors probiert. Aber der compi meckert immer rum dass er diese, und jene .dll nicht findet.
gtk+ habe ich wie im beiliegenden readme gespeichert (unter c:\opt\gtk) und dann " pkg-config --cflags gtk+-2.0" laufen lassen. Aber es geht nicht.
Die Beispielprogramme laufen nur, wenn ich die entsprechenden dlls in den gleichen Ordner wie den Quellcode kopiere.
Ich gehe mal davon aus, dass ich die dlls manuell in der Registry registrieren muss, aber wie?
Dann kommt bei vielen Beispielen noch der Fehler dass (null).dll nicht gefunden werden kann. Was soll das denn sein?
GTK möchte ich nehmen, damit die Programme leichter auch auf LINUX portiert werden können. Auch wenn die Win-API leichter sein sollte.
Grüßle, der hello |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 21.09.2012, 06:57 Titel: |
|
|
Hallo und willkommen im Forum!
Ja, es ist üblich, dass GTK+ Anwendungen die benötigten DLLs im Programmverzeichnis mitbringen. So wird auch sichergestellt, dass die passende Version der Libs vorhanden ist und der User nicht erst irgendwelche DLLs zusammensuchen muss, wenn man seine Programme distribuiert.
Zitat: | GTK möchte ich nehmen, damit die Programme leichter auch auf LINUX portiert werden können. |
Meines Erachtens eine gute Wahl.
Zitat: | Auch wenn die Win-API leichter sein sollte. |
Wir haben zu beiden Methoden Tutorials im FreeBASIC-Portal. Zum Thema WinAPI ist "Lutz Ifers WinAPI Tutorial" empfehlenswert. Allerdings finde ich GTK viel angenehmer als GUIs mit "WinAPI pur" zu programmieren.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
croco97
Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 06.10.2012, 21:35 Titel: |
|
|
Hallo!
Bisschen späte Antwort. Und auch nur ein Hint - ich habe noch nie mit Win7 gearbeitet. (Bis jetzt tut XP seinen Dienst...)
In
http://www.askos.de/tutorial/kap315.htm#kap3
stehen ein paar knappe Hinweise, wie das mit den Pfaden funktioniert. Registry-Einträge brauchst du keinesfalls. Lediglich die Systemvariablen INCLUDE und LIB müssen richtig gesetzt sein.
Allgemein Win-API oder GTK: Ich glaube, das sind auch ein wenig Äpfel und Birnen. Win-API ist ziemlich low level und keine Komponentenbibliothek. Siehe auch
http://www.askos.de/tutorial/kap32.htm
GTK ist eher mit einer Windows-Komponentenbibliothek wie VCL (Delphi) zu vergleichen. Nur dass solche Win-Only-Geschichten im Java/.NET/HTML5-Zeitalter keine grosse Rolle mehr spielen. Auch unter Windows benutzen z.B. C++-Programmierer heute zu 90% Qt als GUI-Framework.
VG!
Croco
[/url] |
|
Nach oben |
|
|
ChrisB
Anmeldungsdatum: 16.02.2013 Beiträge: 1
|
Verfasst am: 16.02.2013, 20:26 Titel: Re: gtk und win7 |
|
|
Hallo!
hellobello hat Folgendes geschrieben: | Dann kommt bei vielen Beispielen noch der Fehler dass (null).dll nicht gefunden werden kann. |
Ich melde mich (nachträglich), da ich heute auf das gleiche Problem gestoßen bin. Vielleicht hilft die folgende Fehlerdoku anderen Nutzern, denen es ähnlich geht. Zum Thema: Ich hatte mich heute mit den Tutorials zu GTK+ auf freebasic-portal.de beschäftigt, allerdings kam bei allen Beispielen, die über ein leeres Fenster hinausgehen, nur folgende Fehlermeldung:
"Die Anwendung konnte nicht gestartet werden, weil (null).dll nicht gefunden wurde."
Das komplette Bundle zu GTK+ war natürlich installiert, auch die Systemvariable PATH wurde gemäß Readme gesetzt. Da aus der "kaputten" Fehlermeldung nicht ersichtlich ist, welche DLL nun tatsächlich fehlt, habe ich kurzerhand alle DLL-Dateien aus der GTK-Installation (und den darin befindlichen Unterordnern) in meinen aktuellen FreeBasic-Projektordner kopiert. Nur leider hat das an der Fehlermeldung auch nichts geändert.
Hier ein (bei mir nicht-funktionierendes) Beispiel:
Code: | ' Bestandteile dieses FreeBasic-Testprogramms finden sich in Tutorials zu GTK+
' Mit GTK+ 2.24 und FreeBasic 0.24 unter WinXP SP 3 ergibt sich jedoch
' ein Programm-Abbruch und folgende Fehlermeldung:
'
' "Die Anwendung konnte nicht gestartet werden, weil (null).dll nicht gefunden wurde.
' Neuinstallation der Anwendung könnte das Problem beheben."
#include once "gtk/gtk.bi"
#define NULL 0
Dim As GtkWidget Ptr win
Dim As GtkWidget Ptr button1, button2
gtk_init(NULL, NULL)
win = gtk_window_new(GTK_WINDOW_TOPLEVEL)
gtk_window_set_title(GTK_WINDOW(win), "Test") ' -> (null).dll nicht gefunden
gtk_widget_set_size_request(win, 250, 150)
gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_CENTER) ' -> (null).dll nicht gefunden
button1 = gtk_button_new_with_label("Button 1")
button2 = gtk_button_new_with_label("Button 2")
Dim As GtkWidget Ptr vbox = gtk_vbox_new(FALSE, 0)
gtk_container_add(GTK_CONTAINER(vbox), button1) ' -> (null).dll nicht gefunden
gtk_container_add(GTK_CONTAINER(vbox), button2) ' -> (null).dll nicht gefunden
gtk_container_add(GTK_CONTAINER(win), vbox) ' -> (null).dll nicht gefunden
gtk_widget_show_all(win)
gtk_main()
End |
Durch Herumprobieren konnte ich das (erste auftretende) Problem auf folgende Zeile eingrenzen:
Code: | gtk_window_set_title(GTK_WINDOW(win), "Test") |
Ändert man das wie folgt ab, läuft das Programm zwar, führt aber zu einer Warnung:
Code: | gtk_window_set_title(win, "Test") ' -> Passing different pointer types, at parameter 1 |
Obiges Codebeispiel habe ich daher wie folgt abgeändert - nun läuft's ohne den "(null).dll"-Fehler.
Code: | #include once "gtk/gtk.bi"
' Auszug aus der "Object Hierarchy"
' +----GtkObject
' +----GtkWidget
' +----GtkContainer
' +----GtkBin
' +----GtkWindow
' +----GtkDialog
' +----GtkAssistant
' +----GtkPlug
#define NULL 0
Dim As GtkWidget Ptr win
Dim As GtkWidget Ptr button1, button2
gtk_init(NULL, NULL)
win = gtk_window_new(GTK_WINDOW_TOPLEVEL)
gtk_window_set_title(Cast(GtkWindow Ptr, win), "Test")
gtk_widget_set_size_request(win, 250, 150)
gtk_window_set_position(Cast(GtkWindow Ptr, win), GTK_WIN_POS_CENTER)
button1 = gtk_button_new_with_label("Button 1")
button2 = gtk_button_new_with_label("Button 2")
Dim As GtkWidget Ptr vbox = gtk_vbox_new(FALSE, 0)
' void gtk_container_add(GtkContainer *container, GtkWidget *widget)
gtk_container_add(Cast(GtkContainer Ptr, vbox), button1)
gtk_container_add(Cast(GtkContainer Ptr, vbox), button2)
gtk_container_add(Cast(GtkContainer Ptr, win), vbox)
gtk_widget_show_all(win)
gtk_main()
END |
Schöne Grüße,
Christian |
|
Nach oben |
|
|
ichhalt
Anmeldungsdatum: 26.01.2013 Beiträge: 39
|
Verfasst am: 19.02.2013, 07:46 Titel: |
|
|
Das mit der null.dll kimmt davon das im FreeBasic/lib verzeichnis liegende dll.a dateien kaputt sind |
|
Nach oben |
|
|
|
|
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 mitmachen.
|
|