![]() |
[Andorra 2D] Compilieren mit Lazarus
Das Originaltutorial befindet sich
![]() Andorra 2D - Compilieren mit Lazarus Aller Anfang ist schwer Um Andorra 2D mit Lazarus kompilieren zu können, sind einige Besonderheiten zu beachten. Hat man diese überwunden, so steht einem jedoch nichts mehr im Wege Andorra 2D sogar unter Linux einzusetzen. Dieses Tutorial setzt eine lauffähige Version von Lazarus sowie einige Kenntnisse im Umgang damit voraus. Falls es also Probleme mit Lazarzus geben sollte, die nicht direkt mit Andorra 2D zusammenhängen (wie z.B. "Lazarus meckert 'Unit Interfaces nicht gefunden', was soll ich tun?"), so richten Sie diese bitte nicht an mich. Aufrichtig wie ich bin, muss ich auch zugeben, selbst noch nicht sehr viel mit Lazarus gearbeitet zu haben. Wenn Sie also noch irgendwelche Fehler oder Verbesserungsvorschläge für den Lazarussupport habe, so zögern Sie nicht, mich darüber in Kenntnis zu setzen. Das Kompilieren des Plugins Die erste Hürde, welche wir überwinden müssen, ist die Tatsache, dass die mit Delphi kompilierten Plugin-DLLs nicht mit Lazarus kompatibel sind. Dies ist ja auch logisch - schließlich handelt es sich bei dem Delphi internen Compilier und dem Free Pascal Compiler (welcher von Lazarus verwendet wird) um zwei Programme, die völlig unabhängig voneinander Entwickelt wurden. Aus diesem Grund ist die Klassenstruktur, welche von Free Pascal erstellt wurde inkompatibel zur Klassenstruktur von Delphi. Nun tauscht Andorra 2D allerdings Objekte zwischen Bibliothek und Hostapplikation aus, was unweigerlich zu Speicherzugriffverletzungen führt. Wir umgehen dieses Problem einfach dadurch, indem wir die Plugin-Bibliothek neu mit Lazarus erstellen. Dazu öffnen wir die Datei "AndorraOGLLaz.lpi" aus dem Verzeichnis "src/dll/opengl/" mit Lazarus. Bevor wir diese Datei jedoch einfach so kompilieren können, müssen wir erst einmal die Suchpfade sowie Ausgabeverzeichnisse entsprechend einstellen. Dazu tragen wir über "Projekt->Compilereinstellungen->Pfade->Andere Unitdateien->..." den Pfad zu dem OpenGL-Header sowie den Pfad zu den Andorra 2D Quellcodedateien ein. Falls es Probleme mit nicht gefundenen Unitdateien geben sollte, kann es helfen die "Pfad-Templates" einfach einmal hinzuzufügen. Besonders unter Linux wollte Andorra 2D nur mit diesen kompilieren. ![]() Unter im Pfade-Dialog sollte zudem unter "Unitausgabepfad" sollte "../../dcu/" eingetragen sein und unter "Projekt->Projekteinstellungen->Zieldateiname" "../../../bin/". Nun können wir es wagen die Bibliothek mit einem Klick auf "Start->Alles neu erstellen" zu erzeugen. Wenn Sie mit der Erfolgsmeldung "Projekt "AndorraOGLLaz" erfolgreich gebaut. :)" beglückt werden, sollten Sie sich noch vergewissern, dass das Plugin auch wirklich neu erstellt worden ist. Werfen Sie dazu einen Blick in das Zielverzeichnis und überprüfen Sie das Änderungsdatum von "AndorraOGLLaz.dll". Wie Sie vielleicht bemerkt haben, weicht der Dateiname der Lazarus-DLL von dem der Delphi-DLL ab um Verwechslung zu vermeiden. Wenn bis hier her alles geklappt hat, steht einem Ausflug in die Welt von Andorra 2D mit der Hilfe von Lazarus nicht mehr viel im Wege. Unser Lazarus Andorra 2D Projekt Nun möchten wir ein einfaches Andorra 2D Projekt mit Lazarus erstellen. Dazu erstellen wir über "Datei->Neu" ein neues "Application"-Projekt und fügen wie beim kompilieren des OpenGL-Plugins den Andorra 2D Suchpfad hinzu. Außerdem kann es unter Verwendung eines anderen Widgetsets als "Win32/Win64" (also zum Beispiel unter Linux) notwendig werden das Package "LazOpenGLContext" zu Ihrem Projekt hinzuzufügen. ![]() Zu Fenstersystemen und Gerätekontexten Diese Notwendigkeit hat folgenden Hintergrund: Unter Verwendung des normalen Windows-Widgetsets kann Andorra 2D der Pluginbibliothek einfach ein Handle (das ist so zu sagen die Inventarnummer unseres Fensters) übergeben. Danach kümmert sich das Plugin selbst um die Erzeugung des entsprechenden Devicecontexts (was unter Windows mit wenigen Zeilen abgehakt ist). Dabei handelt es sich um den Bereich, auf den die Grafikkarte bzw. das verwendete Grafiksystem zeichnen kann. Das Devicecontext muss jedoch vom verwendeten Fenstersystem verwaltet werden. Nun gibt es unter Linux die verschiedensten Fenstersysteme (von denen man ja einige bei Lazarus als Widgetset auswählen kann). Nun müsste das Plugin für jedes dieser Systeme eine Contexterzeugungsroutine bereithalten, was natürlich ein enormer Aufwand wäre. Zum Glück haben sich die fleißigen Entwickler von Lazarus auch hier etwas einfallen lassen: Die Komponente "TOpenGLControl", welches ein Devicecontext angepasst an unser ausgewähltes Fenstersystem und Betriebsystem für unsere Anwendung erstellt. Auf dieses kann das Plugin dann direkt zeichnen. Alternative Windowframeworks, wie zum Beispiel das GLFW-Framework arbeiten nach der gleichen Methode. Mehr Informationen wird es in einem Tutorial "Andorra 2D Windowframeworks" geben. Ein wenig Code... Nun Benötigen wir nur noch ein klein wenig Code um Andorra 2D unter Lazarus testen zu können:
Delphi-Quellcode:
Um Problemen vorzubeugen, hat es sich als nützlich erwiesen die Zeile
procedure TForm1.FormCreate(Sender: TObject);
begin AdDraw := TAdDraw.Create(self); AdDraw.DllName := 'AndorraOGLLaz.dll'; Application.OnIdle := @Idle; AdDraw.Initialize; end; procedure TForm1.FormDestroy(Sender: TObject); begin AdDraw.Free; end; procedure TForm1.Idle(Sender: TObject; var Done:boolean); begin AdDraw.ClearSurface(0); AdDraw.BeginScene; with AdDraw.Canvas do begin Font := AdDraw.Fonts.GenerateFont('Arial', 24, []); TextOut(0,0,'Andorra 2D...'); Font := AdDraw.Fonts.GenerateFont('Arial', 10, []); TextOut(0,30,'...works with Lazarus too'); end; AdDraw.EndScene; AdDraw.Flip; end;
Delphi-Quellcode:
am Anfang der Unit durch
{$mode objfpc}{$H+}
Delphi-Quellcode:
zu ersetzen.
{$MODE DELPHI}
![]() Copyright und Lizenz (c) by Andreas Stöckel Februar 2008 Der Inhalt dieses Tutorials steht unter der ![]() |
Re: [Andorra 2D] Compilieren mit Lazarus
Hi,
ich habe ein Problem beim compilieren der OpenGL-DLL:
Delphi-Quellcode:
Hat das etwas mit den "Pfad-Templates", die du erwähnt hast, zu tun? Den Satz verstehe ich nicht so ganz ;)
AndorraOGL.dpr(82,1) Error: Import library not found for c
Ich nutze die neuste Lazarus-Version (stable) und Andorra 2D 0.4.5.1. Danke schonmal, Roman |
Re: [Andorra 2D] Compilieren mit Lazarus
Benutzt du Linux oder Windows?
|
Re: [Andorra 2D] Compilieren mit Lazarus
Windows Vista64.
EDIT: Problem gelöst. 32-bit Version von Lazarus verwenden! |
Re: [Andorra 2D] Compilieren mit Lazarus
Hallo!
Ich probiere gerade Andorra 2D zum laufen zu kriegen, habe aber leider keinen blassen Schimmer von all dem. Beim Compilieren liegt mein erstes Problem: Also in dem besagten Ordner finde ich keine AndorraOGLLaz.lpi, sondern nur AndorraOGLcg.lpi und AndorraOGL.lpi. Allerdings gibt es schon eine AndorraOGLLaz.dll im Zielordner. Kann ich diese Datei so verwenden? Meine nächste Fage ist dann: Wie verwende ich sie? Ich habe den Pfad "Andorra/src" im Projekt mit angegeben, aber ich bekomme eine Fehlermeldung:
Delphi-Quellcode:
Wäre echt nett, wenn ihr mir helfen könnt, denn ich habe wie gesagt gar keine Ahnung. :?
AdDraws.pas(28,2) Fatal: Can't open include file "andorra_conf.inc"
Gruß Leif |
Re: [Andorra 2D] Compilieren mit Lazarus
Hallo,
wichtig ist, dass du wie beschrieben alle Suchpfade einzufügen. In der aktuellen Andorra Version 0.4.5.1 befinden sich alle benötigten Header im Verzeichnis "lib" des Andorra-Paketes. Versuche auch den Suchpfad für Include-Dateien in Lazarus korrekt zu setzten. Die "AndorraOGLLaz.dll" solltest du theoretisch verwenden können - wie das geht, ist in Tutorial 1 erklärt. Die Tutorials findest du hier: ![]() Andreas |
Re: [Andorra 2D] Compilieren mit Lazarus
Vielen Dank für die Hilfe!
Ich war wohl etwas voreilig mit meiner Frage... mir fehlte tatsächlich noch ein Pfad, obwohl ich dachte ich hätte alle. Mein Traum war es schon immer, irgendwann mal Spiele (mit tooler Grafik) zu programmieren. Andorra ist echt super und auch relativ gut verständlich bis jetzt. Ich werde mich jetzt noch mal ein bisschen da rein fuchsen. Gruß Leif |
Re: [Andorra 2D] Compilieren mit Lazarus
HI!
Ich bin neu hier und weiß, dass dieser Thread schon relativ alt ist... Aber ich Probleme mit dem Compilieren... Da in der neuesten Version (zumindest bei mir), die Zieldatei AndorraOGLLaz.dll, schon im Ordner bin war, versuchte ich dem Tutorial 1 zu folgen, ich glaube jedoch, dass irgendwas immernoch falsch ist, naja: Ich habe die Datei in den Ordner src verschoben, und den dann zum Lazarus-Verzeichnis (glaub ich zumindest, dass es das ist) rüberkopiert. Dann hab ich den Pfad in Lazarus, bei den Compilereinstellungen in die Spalte Bibliotheken (-FI) eingegeben... Ich dachte es funktioniert, aber als ich es dann ausprobiert habe, kam die Fehlermeldung: Unit AdDraw was not found (oder so ähnlich)(das kam auch bei den anderen Ad's) Achja, das Lazarus Tutorial hab ich auch probiert, aber dabei hat auch etwas nicht funkioniert, weiß aber leider nicht mehr was... Noch zur Info: Betriebssystem Windows Vista Home Premium Lazarus' neueste Version Andorra ebenfalls Bitte Hilfe, schnelle Hilfe Ich bin kein großer Geduldsmensch :mrgreen: mfg ZeroIII |
Re: [Andorra 2D] Compilieren mit Lazarus
Ich würde die AndorraOGLLaz trotzdem nochmal neu kompilieren und Schritt für Schritt wie im Tutorial vorgehen, dann ist auch sichergestellt, das es funktioniert. Deine Fehlermeldung weißt auf fehlende Suchpfade hin.
|
Re: [Andorra 2D] Compilieren mit Lazarus
Ich hab jetzt nocheinmal das Lazarus-Tutorial versucht. Ich hab alles Schritt für Schritt durchgemacht und alles überprüft, aber er schreibt immernoch die Fehlermeldung: Fatal: Can't find Unit AdClasses
Ich hab es mit und ohne Pfad-Templates versucht, die gleiche Fehlemeldung... Mit anderen Pfaden, wieder das gleiche... Inzwischen bin ich ratlos, was mach ich falsch? mfg ZeroIII |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz