Seite 1 von 1

PB 5.60 32 Bit geht nicht

Verfasst: 23.05.2017 22:48
von Joshua314
Hallo Zusammen,

ich habe jetzt mit meinem Kollegen 2 Abende versucht Purebasic auf Ubuntu 16.04 und 16.10 32 Bit zum laufen zu bekommen.

Das Programm selbst läuft auf Windows.
Besteht aus mehrenen Teilen und greift direkt auf den FDTI D2xx Treiber zu. Sprich auf eine so. (Auch 32Bit)
Wie schon beschreiben auf Windows rennt alles.

Ziel ist es auf eben einen Kleinen Linux Rechner das ganze zum laufen zu bekommen.

gtk2 ist eingetragen. Alles was ich irgend welchen Foren gefunden habe, habe ich nachinstalliert.

Ich bekomme in der IDE beim laufen lassen immer
Segmentation violation ..... mit Grüße by Fred V5.6 Revision 1808

Wenn ich das Programm Compiliere, startet es ohne Menü. läuft ca. 3 Sekunden und bleibt dann stehen.


Gestartet werden 3 Threads. ein wenig Oberfläche und die SO von FTDI wird aufgemacht. Mehr nicht
Kann es sein, dass Purebasic nicht mehr zu gebrauchen ist auf Linux ???
Wenn ich in den Foren lese, was da alles für Vorschläge gemacht werden... bekomme ich langsam das Gefühl, dass es so ist.

Meine Frage an euch Linux Leute. Wem darf ich mal auf PM meinen Source senden?

Bitte mal Testen ob Ihr den zum laufen bekommt.

Gruß Thomas

Re: PB 5.60 32 Bit geht nicht

Verfasst: 23.05.2017 23:54
von mk-soft
Habe noch nicht so viel mit Linux gemacht. aber meine Tools liefen auch immer unter Linux ohne Probleme.
Kann ja mal rein schauen.

Ich habe auf meinen Mac diverse Linux Versionen am laufen...

Re: PB 5.60 32 Bit geht nicht

Verfasst: 24.05.2017 09:17
von Kukulkan
Joshua314 hat geschrieben: Gestartet werden 3 Threads. ein wenig Oberfläche und die SO von FTDI wird aufgemacht. Mehr nicht
Immer wenn ich das lese, gehen bei mir die Alarmglocken an. Wir machen auch viel mit Threads und das läuft unter WIndows, Linux und Mac. Aber es gibt eine Regel die man unbedingt einhalten muss:
Im Thread darf absolut nichts mit GUI oder Gadgets gemacht werden. Keine Event-Abfragen, keine Gadgets verändern und nix an den Fenstern drehen. Also, wenn dein Thread auch nur ein SetGadgetText() aufruft oder sonstwas an der GUI macht, dann klappt das evtl. noch unter Windows, aber keinesfalls unter Linux und vermutlich auch nicht auf dem Mac.

Bitte schau nach, ob in irgendeinem Code aus dem Thread was mit der GUI gemacht wird.

Ach ja, wenn Du DLL/SO im Main Thread öffnest und dann im Thread die Funktionen aufrufst, kann es auch schnell Probleme geben. Kommt aber auf die DLL/SO an (ThreadSafe?)... Notfalls die lib im Thread öffnen, benutzen und auch schließen.

Und immer gut aufpassen, ob das Programm auch "ThreadSafe" compiliert wird (PB-Option in der IDE und beim Compiler). Bitte lies auch unbedingt die Hilfe zu mit "Threaded" definierten Variablen. Auch wichtig: Bei Filesystem-Zugriffen oder auch Netzwerk-Befehlen sind evtl. Mutex nötig, um die Zugriffe zu koordinieren. Das wird gerne mal vergessen (unabhängig von der Programmiersprache). Auch hierfür das Handbuch mal lesen.

Grüße,

Kukulkan

PS. Wir schreiben alle GUI-Ergebnisse aus dem Thread in einen Stack (LinkedList, mit Mutex koordiniert) und arbeiten alles im Main-Thread ab. So haben wir das stabil hinbekommen.

Re: PB 5.60 32 Bit geht nicht

Verfasst: 24.05.2017 15:04
von Joshua314
Kukulkan hat geschrieben:
Joshua314 hat geschrieben: Gestartet werden 3 Threads. ein wenig Oberfläche und die SO von FTDI wird aufgemacht. Mehr nicht
Immer wenn ich das lese, gehen bei mir die Alarmglocken an. Wir machen auch viel mit Threads und das läuft unter WIndows, Linux und Mac. Aber es gibt eine Regel die man unbedingt einhalten muss:
Im Thread darf absolut nichts mit GUI oder Gadgets gemacht werden. Keine Event-Abfragen, keine Gadgets verändern und nix an den Fenstern drehen. Also, wenn dein Thread auch nur ein SetGadgetText() aufruft oder sonstwas an der GUI macht, dann klappt das evtl. noch unter Windows, aber keinesfalls unter Linux und vermutlich auch nicht auf dem Mac.

Bitte schau nach, ob in irgendeinem Code aus dem Thread was mit der GUI gemacht wird.

Ach ja, wenn Du DLL/SO im Main Thread öffnest und dann im Thread die Funktionen aufrufst, kann es auch schnell Probleme geben. Kommt aber auf die DLL/SO an (ThreadSafe?)... Notfalls die lib im Thread öffnen, benutzen und auch schließen.

Und immer gut aufpassen, ob das Programm auch "ThreadSafe" compiliert wird (PB-Option in der IDE und beim Compiler). Bitte lies auch unbedingt die Hilfe zu mit "Threaded" definierten Variablen. Auch wichtig: Bei Filesystem-Zugriffen oder auch Netzwerk-Befehlen sind evtl. Mutex nötig, um die Zugriffe zu koordinieren. Das wird gerne mal vergessen (unabhängig von der Programmiersprache). Auch hierfür das Handbuch mal lesen.

Grüße,

Kukulkan

PS. Wir schreiben alle GUI-Ergebnisse aus dem Thread in einen Stack (LinkedList, mit Mutex koordiniert) und arbeiten alles im Main-Thread ab. So haben wir das stabil hinbekommen.
huppp Deine beschriebenen Fallen mit der GUI mache ich alle... Also Umschreiben.. melde mich wenn ich es umgeschrieben habe.

Gruß Thomas

Re: PB 5.60 32 Bit geht nicht

Verfasst: 24.05.2017 15:17
von Kukulkan
Unbedingt vorher das hier lesen:

FAQ: Threads in PB
http://purebasic.fr/german/viewtopic.php?f=9&t=18374

__________________________________________________
Domain angepasst
24.05.2017
RSBasic

Re: PB 5.60 32 Bit geht nicht

Verfasst: 24.05.2017 15:23
von NicTheQuick
Kukulkan hat geschrieben:Unbedingt vorher das hier lesen:

FAQ: Threads in PB
http://forums.purebasic.com/german/view ... =9&t=18374
Wie kommst du auf diese Domain? Die korrekte wäre http://www.purebasic.fr/german/viewtopi ... =9&t=18374
Bei deiner funktionieren auch die Cookies nicht korrekt.

Re: PB 5.60 32 Bit geht nicht

Verfasst: 24.05.2017 15:37
von Kukulkan
Komisch. Meine Bookmarks sind auch auf die richtige neue Domain. Da ich mit Google nach dem passenden Artikel gesucht hab, hat wohl Google die alte Domain geliefert.

Danke für den Hinweis! Muss ich in Zukunft drauf achten :-)

Re: PB 5.60 32 Bit geht nicht

Verfasst: 24.05.2017 19:09
von mk-soft
Das mit der GUI aus Threads zu bearbeiten geht unter Mac und Linux nicht.

Dafür habe ich extra ein Modul veröffentlich um Gadgets aus Threads zu füllen und zu ändern.
Link: http://www.purebasic.fr/english/viewtop ... 12&t=66180

Um die Anforderung ein Fenster zu öffnen kann man dieses mit der Funktion SendEvent(...) lösen.

P.S. In Threads darf man auch nicht WindowEvent() oder WaitWindowEvent() verwenden.
Es sollte sowie so nur einmal im ganzen Programm vorkommen.

Re: PB 5.60 32 Bit geht nicht

Verfasst: 26.05.2017 08:46
von mhs
NicTheQuick hat geschrieben:
Kukulkan hat geschrieben:Unbedingt vorher das hier lesen:

FAQ: Threads in PB
http://forums.purebasic.com/german/view ... =9&t=18374
Wie kommst du auf diese Domain? Die korrekte wäre http://www.purebasic.fr/german/viewtopi ... =9&t=18374
Bei deiner funktionieren auch die Cookies nicht korrekt.
Das ist allerdings nicht sein Fehler, sondern die des hiesigen Webmasters. Die alte Domain sollte per 301er Redirect auf die neue verweisen, dann wäre alles in Ordnung und auch kein Duplicate Content in Google vorhanden.

Re: PB 5.60 32 Bit geht nicht

Verfasst: 26.05.2017 11:19
von RSBasic
mhs hat geschrieben:Das ist allerdings nicht sein Fehler, sondern die des hiesigen Webmasters.
Das wissen wir, aber da der Super-Administrator dieses Forums nichts macht, können wir nur darauf hinweisen, dass man nur eine Domain verwendet.
Ich verstehe das schon seit Jahren nicht, warum das für ihn nicht wichtig ist. Es ist nur eine Kleinigkeit. Und außerdem wenn das Canonical-Tag mit Weiterleitung nicht richtig gesetzt wird, dann wird es bei Google negativ bewertet.