Flexibles Import?

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Flexibles Import?

Beitrag von HeX0R »

Ich habe folgenden Code in einem meiner Tools, um die Suchfunktion eines WebKits zu verwenden:

Code: Alles auswählen

CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
	ImportC "/usr/lib/x86_64-linux-gnu/libwebkitgtk-3.0.so";.2"
		webkit_web_view_search_text(webView, text.p-ascii, case_sensitive, forward, wrap)
	EndImport
CompilerElse
	ImportC "/usr/lib/libwebkitgtk-1.0.so";.2"
		webkit_web_view_search_text(webView, text.p-ascii, case_sensitive, forward, wrap)
	EndImport
CompilerEndIf
Dieser Mist funktioniert aber natürlich wieder nur bei den Distributionen, die auch genau diese Versionen installiert haben.
Gibt es eine elegante Möglichkeit das zu umschiffen, oder muss ich umständlich per OpenLibrary, mit vorherigem Durchsuchen per FileSize und GetFunction arbeiten?
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: Flexibles Import?

Beitrag von uweb »

Hallo HeX0R,
ich mache zwar (noch) wenig mit Linux und ImportC aber ich glaube ich habe einen passenden Link für Dich:
http://www.purebasic.fr/german/viewtopi ... 3&start=29
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Flexibles Import?

Beitrag von NicTheQuick »

Zunächst mal würde ich es so schreiben, damit der Pfad egal ist:

Code: Alles auswählen

CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
   ImportC "-lwebkitgtk-3.0"
      webkit_web_view_search_text(webView, text.p-ascii, case_sensitive, forward, wrap)
   EndImport
CompilerElse
   ImportC "-lwebkitgtk-1.0"
      webkit_web_view_search_text(webView, text.p-ascii, case_sensitive, forward, wrap)
   EndImport
CompilerEndIf
Um die Version musst du dich dann leider selbst kümmern mit OpenLibrary(). Auf welchen Distributionen hast du denn andere Versionen als 1.0 und 3.0 von libwebgitgtk gefunden?
Bild
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Flexibles Import?

Beitrag von HeX0R »

Mich hatte ein User angeschrieben, dass die 1.0er Version bei ihm nicht installiert ist, nur 2.0 und 4.0, wenn ich mich recht erinnere.
Und 1.0 liess sich nicht nachinstallieren?!
Kann das sein?

Ich hatte auch nur 1.0 für x86 und 3.0 für x64 gewählt, weil das in meinen genutzten Linux Distributionen installiert war.
Ohne lange drüber nachzudenken, wie das andere handhaben.

Na ja, irgendwie macht das Import dann bei Linux wenig Sinn, also doch zu Fuß...
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Flexibles Import?

Beitrag von NicTheQuick »

Es gibt offenbar webkitgtk2 in Version 2.17.4. Von Version 4 habe ich noch nicht gelesen, höchstens Version 2.4, aber die ist ja auch schon veraltet.
Mein Vorschlag wäre dann einfach zwei verschiedene Versionen zu kompilieren. Dann kannst du weiterhin die Vorteile von "Import" benutzen.
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Flexibles Import?

Beitrag von mk-soft »

Ich weiss nicht wo ich das her hatte. Bei mir habe ich folgende Wekkit installiert.
sudo apt-get install libwebkitgtk-dev libwebkitgtk-3.0-dev libwebkit2gtk-4.0-dev
Unbuntu v16.04.2
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Flexibles Import?

Beitrag von HeX0R »

Nur so zur Info, um das Ganze abzurunden, ich habe das jetzt relativ unspektakulär so geregelt:

Code: Alles auswählen

PrototypeC webkit_web_view_search_text(webView, text.p-utf8, case_sensitive, forward, wrap)
Global webkit_web_view_search_text.webkit_web_view_search_text
Global libwebkitDLL.i

libwebkitDLL = OpenLibrary(#PB_Any, "libwebkitgtk-4.0.so")
If libwebkitDLL = 0
	libwebkitDLL = OpenLibrary(#PB_Any, "libwebkitgtk-3.0.so")
EndIf
If libwebkitDLL = 0
	libwebkitDLL = OpenLibrary(#PB_Any, "libwebkitgtk-2.0.so")
EndIf
If libwebkitDLL = 0
	libwebkitDLL = OpenLibrary(#PB_Any, "libwebkitgtk-1.0.so")
EndIf
If libwebkitDLL
	webkit_web_view_search_text = GetFunction(libwebkitDLL, "webkit_web_view_search_text")
EndIf
Nicht schön, aber selten und für eine evtl. kommende Version 4 schon gerüstet :mrgreen:
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Flexibles Import?

Beitrag von GPI »

Das mit Version 4 solltest du dir überlegen. Möglich das da dann die Funktion andere Parameter bekommt, die du natürlich nicht beachten kannst. Das ist doch der Sinn daran, das man die Version beim laden angibt, oder?
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Antworten