![]() |
[Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektordner
Hi,
wenn ich in den Compilereinstellungen bei "Andere Units" den Pfad zur Andorra 2D src eingebe (/home/glocke/Programmierung/Lazarus/ad2d_451/src/) und dann mein projekt compiliere, werden haufenweise Andorra2D src-Dateien ins Projektverzeichnis kopiert. Ich glaube nicht, dass das Sinn und Zweck der Sache ist :D Andorra: 0.451 Lazarus: 0.9.28.2-0 Beta LG Glocke |
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Hi!
Meinst du wirklich Quelltextdateien (also *.pas) oder kompilierte Units (*.o, *.ppu)? Im ersten Fall ist das seltsam und im zweiten Fall "by design". Im Gegensatz zu Delphi kompiliert Free Pascal die Units nicht im selben Verzeichnis, falls kein Unitausgabepfad angegeben ist, sondern im Verzeichnis des Hauptquelltextes. Ich empfehle dir also so oder so immer ein Unitausgabeverzeichnis in den Compilereinstellungen anzugeben, da dies deinen Projektordner "sauber" hält. Den Ordner, den ich immer angebe ist obj\$TargetCPU()-$TargetOS() (unter Linux natürlich mit "/" statt "\"), was z. B. unter Win32 den Ordner obj\i386-win32 relativ zur Projektdatei (*.lpi) bezeichnet (Lazarus erstellt diesen Ordner übrigens automatisch). Allerdings wird hier dann auch die fertige Anwendung hinkompiliert. Um dies zu verhindern solltest du unter Projekt->Projekteinstellungen->Anwendung->Zieldateiname noch $NameOnly($ProjFile()) angeben, so wird die Anwendung nämlich in deinem Projektverzeichnis unter dem Namen deiner Projektdatei erzeugt. Für Andorra2D wäre es wahrscheinlich empfehlenswert ein Lazarus-Package anzulegen (ich sollte wohl mal einen Featurerequest machen :D ). Dieses muss man ja nichteinmal bei Lazarus installieren, um es verwenden zu können, und die Andorra2D Units bleiben in einem eigenem Quelltextverzeichnis. (ich liebe Packages unter Lazarus... im Gegensatz zu Delphipackages :mrgreen: ) Gruß, Sven |
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Wenn jemand ein Package von Andorra 2D erstellen könnte wäre das prima, ich persönlich bin jedoch noch nicht dahinter gestiegen, wie ich ein Package erstelle, das einfach nur die entsprechenden Units in den Suchpfad aufnimmt ohne zu versuchen immer alle Units zu kompilieren.
|
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Zitat:
Gruß, Sven |
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Zitat:
|
Re: [Lazarus + Andorra 2D]
Zitat:
Zitat:
/EDIT: Hab aber noch nen anderes Problem:
Delphi-Quellcode:
Wenn ich die Zeile
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, AdDraws, AdClasses, AdTypes; type { TForm1 } TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Idle(Sender: TObject; var Done:boolean); private { private declarations } public { public declarations } end; var Form1: TForm1; AdDraw: TAdDraw; implementation { TForm1 } 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; initialization {$I unit1.lrs} end.
Delphi-Quellcode:
nicht auskommentiere, kommt
//Application.OnIdle := @Idle;
Zitat:
Delphi-Quellcode:
Wenn ich es auskommentiert lasse, kommt keine Fehlermeldung aber es passiert auch nichts (was ja logisch ist :P )
FLastKey := nil;
Ich kann damit nichts anfangen. Jmd. da eine Idee ? =) |
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Zitat:
Zitat:
Delphi-Quellcode:
in
Application.OnIdle := @Idle;
AdDraw.Initialize;
Delphi-Quellcode:
Ansonsten hab ich keine Ahnung, denn bei mir läufts (allerdings verwende ich eine ApplicationProperties-Komponente, in der ich das OnIdle-Ereignis zugewiesen habe).
AdDraw.Initialize;
Application.OnIdle := @Idle; Oh halt... mir kommt noch eine Idee: liegt die AndorraOGLLaz.dll denn im selben Verzeichnis wie die Anwendung? Gruß, Sven |
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Zitat:
Zitat:
Zitat:
LG Glocke |
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Zitat:
Zitat:
Gruß, Sven |
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Zitat:
/EDIT: hat geklappt... also fast xD Zitat:
Zitat:
|
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Hi!
Sorry, dass ich dich solang hab warten lassen, aber ich war mit Uni etwas beschäftigt... Zitat:
Du musst also folgendermaßen vorgehen: im Andorra 2D Verzeichnis das Projekt AndorraOGL.lpi in src/dll öffnen und auf "Projekt->Projekteinstellungen->Anwendung" gehen. Dort unter "Zieldateiname" das ".dll" entfernen und mit OK den Dialog schließen. Hiernach die Library mit Strg+F9 kompilieren (sie wird im bin Verzeichnis deines Andorra 2D Verzeichnisses als AndorraOGLLaz.so erstellt) und an einen Ort kopieren, wo der Runtimelinker von Linux die Datei finden kann (z. B. /lib oder /usr/lib). Alternativ kannst du auch deine LD_LIBRARY_PATH Variable um das [i]bin[i]-Verzeichnis in deinem Andorra-Verzeichnis (absoluter Pfad) erweitern (hiernach Lazarus neustarten, damit es die geänderte Umgebungsvariable mitbekommt). In deinem Code musst du nun den String 'AndorraOGLLaz.dll' in 'AndorraOGLLaz.so' umändern und es sollte ( :!: ) nun funktioneren, wenn nicht, weißt du ja wo du mich findest. :P Gruß, Sven |
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Zitat:
Delphi-Quellcode:
oder z.B.
AdDraw.DllName := './AndorraOGLLaz.so';
Delphi-Quellcode:
schreibt, kann man sich zumindest das oben zitierte Prozedere ersparen. ;-) Ansonsten ist alles, was du geschrieben hast zu 100% korrekt.
AdDraw.DllName := ExtractFilePath(ParamStr(0)) + 'AndorraOGLLaz.so';
|
Re: [Lazarus + Andorra 2D] kopiert Andorra2Dsrc in projektor
Zitat:
Gut, dass ich das auch mal erfahre. Dann ist der Property-Name DllName aber etwas irreführend... da hätte ich dann eher DllPath erwartet. :mrgreen: Nebenbei: Würdest du in den Projekteinstellungen der DLLs im Zieldateiname bitte die Dateiendung entfernen? FPC hängt automatisch die richtige Endung für das jeweilige System an. Gruß, Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 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