Wp liegen die Units "mmsystem" und "gl"?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Wp liegen die Units "mmsystem" und "gl"?

Beitrag von thosch »

Hallo,


ich will ein Projekt übersetzen, das diese beiden Units voraussetzt. Der Compiler gibt mir aber diese Fehelermeldung:

MEINEUNIT.PAS(22,47) Fatal: Kann GL nicht finden verwendet von meineunit. Stellen Sie sicher, daß alle .ppu-Dateien eines Packages sich in dessem Ausgabeverzeichnis befinden. ppu im falschen Verzeichnis=c:\lazarus\fpc\3.0.4\units\i386-win32\opengl\gl.ppu..

Was bedeutet diese Fehlermeldung. Im Verzeichnis c:\lazarus\fpc\3.0.4\units\i386-win32\opengl\ ist eine Unit gl.ppu.

Warum erkennt das der Compiler nicht an?

In Lazarus gibt es den Dialog Projekteinstellungen, dort den Unterpunkt "Pfade", dort habe ich diesen Pfad bei Andere Units (-Fu ) ... eingetragen.

Was muss ich noch tun, damit der Compiler die Gl.ppu auch findet?

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Wp liegen die Units "mmsystem" und "gl"?

Beitrag von wp_xyz »

Die Units gl und mmsystem gehören zu FPC und sollten immer gefunden werden. Zumindest funktioniert es bei mir, wenn ich die beiden einfach in der uses-Zeile eines Dummy-Projekts eintrage und dieses übersetze.

Das Problem ist wahrscheinlich, dass du den Suchpfad um den Pfad zu diesen Units erweitert hast. Das macht man zwar bei Delphi, ist aber bei Lazarus tabu, weil der Compiler nun diese Units neu übersetzen kann; die übersetzte Datei ist neuer als die alte und daher müssen alle anderen Units, die von dieser Unit abhängen, ebenfalls übersetzt werde, was aber nun scheitert, weil die IDE die benötigten Quell-Dateien nicht findet.

FPC-Units kannst du in einer normalen Installation einfach in die uses-Liste aufnehmen. Bei Lazarus-Units musst du die Packages, zu denen die Units gehören, ins Projekt aufnehmen: "Projekt" > "Projekt-Inspektor" > Rechtsklick auf "Benötigte Packages" > gewünschtes Package auswählen, "OK", das Package taucht nun in dem Projekt-Baum auf. Da die IDE über das Package weiß, wo die übersetzten Package-Dateien liegen, sind keine Eintragungen im Unitpfad nötig.

Wie kommst du wieder aus der Misere raus? Bereinige den Unitsuchpfad wieder und wähle "Start" > "Neu kompilieren". Falls das nicht funktioniert, beende die IDE und lösche alle ppu-Dateien in deinem Projektverzeichnis; dann IDE wieder starten und neu übersetzen (der Neustart ist evtl unnötig, aber ich habe gesehen, dass die IDE viele Dateien im Cache hat, so dass alles ohne den Neustart sehr unbersichtlich sein kann).

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Wp liegen die Units "mmsystem" und "gl"?

Beitrag von PascalDragon »

thosch hat geschrieben:
Di 29. Dez 2020, 20:22
ich will ein Projekt übersetzen, das diese beiden Units voraussetzt. Der Compiler gibt mir aber diese Fehelermeldung:

MEINEUNIT.PAS(22,47) Fatal: Kann GL nicht finden verwendet von meineunit. Stellen Sie sicher, daß alle .ppu-Dateien eines Packages sich in dessem Ausgabeverzeichnis befinden. ppu im falschen Verzeichnis=c:\lazarus\fpc\3.0.4\units\i386-win32\opengl\gl.ppu..
Auf was sind in den Compilereinstellungen deine Ziel-CPU und dein Ziel-OS eingestellt?

Hast du ein 32- oder 64-bit Lazarus installiert?
thosch hat geschrieben:
Di 29. Dez 2020, 20:22
In Lazarus gibt es den Dialog Projekteinstellungen, dort den Unterpunkt "Pfade", dort habe ich diesen Pfad bei Andere Units (-Fu ) ... eingetragen.
Dort keine Pfade für Units eintragen, die FPC selbst bereitstellt. Diese sind bereits durch die bei Lazarus mitgelieferte fpc.cfg abgedeckt.
FPC Compiler Entwickler

thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Re: Wo liegen die Units "mmsystem" und "gl"?

Beitrag von thosch »

Danke @wp_xyz!

Unitsuchpfade bereinigen ist die Lösung. Ich habe das gemacht, indem ich die .lps- und .lpi Datei gelöscht und danach das Projekt mittels der .lpr Datei nach Neustart von Lazarus, das dann mit einer Forularanwendung startet, neu eingelesen habe.

@PascalDragon:
Ich übersetze das Projekt für Win32 auf Win64 Rechner. Lazarus ist Version 2.0.6 i386-win32/i386-win64. DIeses läuft auf einem AMD Athlon(tm) B24 Prozessor mit 2 Kernen.
In den Projekteinstellungen habe ich Zielprozessor, Zielbetriebssystem, ... bei den Voreinstellungen belassen. Daher übersetze ich aktuell für 32 Bit.

Antworten