Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DCU <> OBJ, oder wie kompiliere ich eine DCU? (https://www.delphipraxis.net/60791-dcu-obj-oder-wie-kompiliere-ich-eine-dcu.html)

Der Jan 12. Jan 2006 10:19


DCU <> OBJ, oder wie kompiliere ich eine DCU?
 
Erstmal sorry für den Titel, aber mir fällt nix besseres ein.

Der Sachverhalt... ich habe eine C-Library, die ich in Delphi importiert habe. Hierzu habe ich die C-Library compiliert, eine Unit "LibBCDelphi" geschrieben, in der die nötigen Konstanten, Funktionsheader etc. definiert und die von C-Compiler erzeugten Objekt-Files reingelinkt werden und noch eine Unit "LibDelphi" geschrieben, in dieser werden quasi Delphi-Adäquate für die von den C-Objektfiles benötigten Funktionen aus der C-Runtime-Library implementiert. LibDelphi wird in LibBCDelphi mittels "uses" eingebunden.
Hört sich kompliziert an, funktioniert aber :wink: Inklusive Testprogramm in Delphi usw.

Jetzt zu meinem Problem: Die Unit LibBCDelphi soll jetzt in weiteren Projekten genutzt werden, also hab ich die LibBCDelphi.dcu ins Projektverezichnis kopiert, wollte mutig kompilieren und... Mistikacki :wall:

Delphi-Quellcode:
[Fataler Fehler] LSS.dpr(9): Unit LibBCDelphi wurde mit einer unterschiedlichen Version von LibDelphi.strdup compiliert
Also LibDelphi.dcu mit rein ins Verzeichnis, Ergebnis bleibt das selbe.
Erst wenn ich alle Files, die für die Erzeugung von LibBCDelphi/LibDelphi nötig sind (pas, obj) einbinde bzw. das Verzeichnis, wo diese stehen, für Delphi bekanntmache, läßt sich das Projekt kompilieren.

Es soll aber reichen, die DCU ohne Source weiterzugeben (z.B. an externe Partner, die das Teil auch nutzen sollen). Was kann ich da tun?

Ich hoffe, ihr konnten meinen, zugegebenermaßen, leicht wirren Ausführungen folgen. :gruebel:

Bernhard Geyer 12. Jan 2006 10:27

Re: DCU <> OBJ, oder wie kompiliere ich eine DCU?
 
Zitat:

Zitat von Der Jan
Es soll aber reichen, die DCU ohne Source weiterzugeben (z.B. an externe Partner, die das Teil auch nutzen sollen). Was kann ich da tun?

Du mußt auf jedenfall für jede Delphi-Version eine mit der passenden Delphi-Version kompilierte Version bereitstellen.
Aber die Frage ist: Dein Knowhow liegt ja "verschlüsselt" in der C-Objektdatei. Was für probleme hast Du damit die "Delphi-Header-Datei" als Sourcen mitzugeben?

Der Jan 12. Jan 2006 13:13

Re: DCU <> OBJ, oder wie kompiliere ich eine DCU?
 
Zitat:

Zitat von Bernhard Geyer
Dein Knowhow liegt ja "verschlüsselt" in der C-Objektdatei. Was für probleme hast Du damit die "Delphi-Header-Datei" als Sourcen mitzugeben?

Nun, die C-Lib bildet nur die Grundlage, die Delphi-Units bauen darauf auf, also es sind nicht nur reine Header-Dateien. Aber der Hauptgrund ist, das es einfacher und "traffic-schonender" ist, mal ein oder zwei DCUs weiterzugeben, als ein ganzes Bündel recht umfangreicher Sourcen. Und die Partner hängen auch nicht mit am VCS...

Aber das wichtigste: Problem gelöst !
Es gibt da einen Import der LibTiff in Delphi und der Autor war genauso schlau, seinen "C-RTL-Clone" LibDelphi zu nennen :) Da diese Lib noch im Lib-Pfad stand, hat er diese genommen, statt meiner und das war das ganze Problem :idea:

:?: Trotzdem noch ne Frage: Gibt es eine Option/Möglichkeit, eine DCU, wie ein meinem Fall die LibDelphi, komplett in eine andere reinzukompilieren, so daß man sie garnicht mehr als separates File braucht?

MaBuSE 12. Jan 2006 13:32

Re: DCU <> OBJ, oder wie kompiliere ich eine DCU?
 
Zitat:

Zitat von Der Jan
:?: Trotzdem noch ne Frage: Gibt es eine Option/Möglichkeit, eine DCU, wie ein meinem Fall die LibDelphi, komplett in eine andere reinzukompilieren, so daß man sie garnicht mehr als separates File braucht?

Jede *.pas Datei erzeugt eine *.dcu Datei, wenn Du nur eine *.dcu Datei haben willst, mußt Du alles in eine Pas Datei packen. Diese kompilieren und weitergeben.
(Falls externe Dateien eingebunden werden (*.res, *.dfm, *.obj) müssen die auch mitgegeben werden.)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:54 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