Externe C-Library einbinden

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
HobbyProgrammer
Beiträge: 173
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Externe C-Library einbinden

Beitrag von HobbyProgrammer »

Hallo,

ich hoffe ich bin im richtigen Themenbereich, falls nicht bitte gerne verschieben.
Bei meinem aktuellen Projekt will ich später mal eine externe C-Library einbinden, genauer gesagt die 'libdsk' von Seasip. Das ganze dann jeweils für Linux und Windows.
Nun bin ich dabei meine beiden Programmier VMs (Kubuntu 22.04 64bit und Windows 10 64bit) durch eine Cross-Platform VM zu ersetzen. Diese läuft unter Kubuntu 22.04LTS 64bit und per Wine sollen dann die erzeugten Windows Programme start und testbar werden.
Funktioniert das dann auch mit dem Einbinden der externen C-Library oder brauch ich dann dafür doch wieder eine "richtige" Windows Umgebung?

Grüße
Hobbyprogrammer
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 3.0.0 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Externe C-Library einbinden

Beitrag von Mathias »

Funktioniert das dann auch mit dem Einbinden der externen C-Library oder brauch ich dann dafür doch wieder eine "richtige" Windows Umgebung?
Wine müsste reichen, ansonsten würden sehr wenige Apps unter wine laufen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

HobbyProgrammer
Beiträge: 173
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Externe C-Library einbinden

Beitrag von HobbyProgrammer »

Mathias hat geschrieben:
Di 27. Jun 2023, 23:16
Funktioniert das dann auch mit dem Einbinden der externen C-Library oder brauch ich dann dafür doch wieder eine "richtige" Windows Umgebung?
Wine müsste reichen, ansonsten würden sehr wenige Apps unter wine laufen.
Das klingt Prima. Denn ich finde es, jetzt wo die Wine Konfiguration läuft, sehr praktisch unter Linux Lazarus Programme auch als Windows Version kompilieren und mit Wine starten zu können. Zumal eine Windows 10 VM sehr träge, fast schon behäbig ist. :)
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 3.0.0 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Externe C-Library einbinden

Beitrag von Mathias »

Meistens läuft alles mit wine. Die meisten Schwierigkeiten gibt es, wen man Hardware direkt anspricht, ZB. den Com-Port.
Zumal eine Windows 10 VM sehr träge, fast schon behäbig ist.
Dies ist leider so, daher verwende ich es nur um etwas zu properen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Externe C-Library einbinden

Beitrag von af0815 »

HobbyProgrammer hat geschrieben:
Mi 28. Jun 2023, 06:09
Zumal eine Windows 10 VM sehr träge, fast schon behäbig ist. :)
Kann ich so nicht bestätigen. Allerding läuft meine VM auf 4 Kernen und mit 16GB Ram von der SSD weg unter VirtualBox. Damit ist nicht viel Unterschied zu einem 'normalen' Windows 10 Rechner mit denen ich laufend zu tun habe.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

HobbyProgrammer
Beiträge: 173
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Externe C-Library einbinden

Beitrag von HobbyProgrammer »

af0815 hat geschrieben:
Mi 28. Jun 2023, 10:08
HobbyProgrammer hat geschrieben:
Mi 28. Jun 2023, 06:09
Zumal eine Windows 10 VM sehr träge, fast schon behäbig ist. :)
Kann ich so nicht bestätigen. Allerding läuft meine VM auf 4 Kernen und mit 16GB Ram von der SSD weg unter VirtualBox. Damit ist nicht viel Unterschied zu einem 'normalen' Windows 10 Rechner mit denen ich laufend zu tun habe.
Dein Rechner hat evtl. einen stärkeren Prozessor und meine Windows 10 VM hatte 2 Kerne und 8GB Speicher.
Was hast Du für VM Einstellungen (System, Anzeige, Massenspeicher ...)?
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 3.0.0 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Externe C-Library einbinden

Beitrag von af0815 »

HobbyProgrammer hat geschrieben:
Mi 28. Jun 2023, 12:37
Dein Rechner hat evtl. einen stärkeren Prozessor und meine Windows 10 VM hatte 2 Kerne und 8GB Speicher.
Was hast Du für VM Einstellungen (System, Anzeige, Massenspeicher ...)?
Basis: Intel Core i7-10850H 2,70 Ghz (6 Kerne, 12 Threads) 32GB Ram, SSD, Touchscreen , NVIDIA Quadro T2000

Virtual Box VM wie folgt:
Screenshot 2023-06-28 130909.jpg
Screenshot 2023-06-28 130909.jpg (53.21 KiB) 911 mal betrachtet
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

HobbyProgrammer
Beiträge: 173
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Externe C-Library einbinden

Beitrag von HobbyProgrammer »

Der einzig große Unterschied ist, das Du in Deinem Rechner eine
NVIDIA Grafik drin hast. Mein Notebook hat "nur" die Prozessorgrafik.
Und das der Prozessor bei Dir 1 Generation neuer ist als der in meinem Notebook. Sollte das soviel ausmachen?
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 3.0.0 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Externe C-Library einbinden

Beitrag von af0815 »

Grafik, Prozessor können schon was hergeben, wo mein fast 8 Jahre alter Desktop auch in der VM flott ist. Aber auch der hat eine extra Grafikkarte. Es kann auch sein das gerad NVIDIA gute Treiberunterstützung in der VM hat. Das wirkt sich dann aus. Weil ich kann sogar USB-Kameras die hochauflösend sind, vernünftig in die VM bringen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

HobbyProgrammer
Beiträge: 173
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Externe C-Library einbinden

Beitrag von HobbyProgrammer »

Ok, das mit der NVIDIA Treiberunterstützung könnte schon hinkommen.
Werd mir deshalb aber kein neues Notebook kaufen, das jetzige ist ja erst 3,5Jahre alt. :lol:

Ich werd mit der Cross-Platform VM weitermachen. Die bisherige Windows 10 VM hab ich notfalls noch auf externer Festplatte als Backup. :)
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 3.0.0 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Externe C-Library einbinden

Beitrag von af0815 »

Ich bin durch die Firma dazu angehalten, nativ auf Win10 zu entwickeln und die ganzen Programme dann Cross auf die native Plattform zu bringen. Das geht relativ gut, für die Layouts habe ich mir im laufe der Zeit ein paar Tricks herausgesucht, das das geht. Ich löse das über die bedinget Kompilierung für die Plattform, besonders Schriftgrößen etc. unterscheiden sich zwischen Windows, Linux, Raspbian und dort auch noch je nach Widgetset. Da gibt es halt eine Datei mit den ganzen globalen Definitionen für mich und über die stelle ich das Layout bei den Testläufen dann feiner ein. Ansonsten kann man Layouts bauen, die sehr robust sind und auch mal eine Umstellung von Querlayout zu Hochkantlayout vertragen (besonders am RasPi gerne verwendet, je nach Montagelage).

Die ganzen C-libs liegen bei mir am WindowsPC in einer eigenen Struktur je nach Prozessor. Da diese C-libs älter sind gibt es im Normalfall keine Probleme auf neuen Rechnern (sind normalerweise abwärtskompatibel). Damit kann ich alles direkt unter Windows linken und übertrage dann automatisiert die Programme auf die Targetmaschinen. Da kann man sich sehr viel automatisieren über Scripts die von Lazarus nach dem kompilieren aufgerufen werden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

HobbyProgrammer
Beiträge: 173
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Externe C-Library einbinden

Beitrag von HobbyProgrammer »

Bedingte Kompilierung verwende ich auch. Grad auch im Hinblick der Unterschiede Linux / Windows. :)

Für mich war hier die Frage wichtig, ob es mit der Cross-Platform Konfiguration auch möglich ist für ein Windows Programm per Wine das Einbinden (dynamisches Laden einer DLL und Nutzen der darin enthaltenen Funktionen) einer externen C-Library zu Testen oder ob es dafür eine "richtige" Windows Umgebung braucht.
Was ich bis jetzt gelesen habe funktioniert das. :)
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 3.0.0 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Antworten