Meine allgemeine Frage ist, wie Sie Fehler beheben können "Mein BPL wird aufgrund einer Abhängigkeit nicht geladen geh weg, egal wie viel ich aufräume und neu kompiliere ". Update Sie denken vielleicht, dass Sie ein sauberes neu kompiliertes System haben, aber dank des umgekehrten Wunders, das Windows und seine Dateisystemvirtualisierungsfehlfunktionen sind, haben Sie nicht.Lösen von Problemen mit Delphi BPL-Paketen, bei denen BPLs nicht geladen werden, aber bereits neu kompiliert wurden (Windows VirtualStore-Dateisystemproblem)
Wenn ich versuche, mein Entwurfspaket zu laden (in diesem Fall genannt dclFsTee.bpl
) in meine Delphi IDE (es ist das schnelle Bericht 4 TeeChart Wrapper-Komponente Paket), es klagt:
The program can't start because tee7100.bpl is missing from your computer. Try reinstalling ...
Die tee7100.bpl
ist nicht referenziert auf jeder DCP- oder DCU-Datei auf meinem System, die ich kenne. Aber klar, etwas stimmt nicht, und ich kann das Problem nicht finden.
Alle Delphi-Benutzer sehen sich mit hundert Problemen konfrontiert, die nicht mit BPLs kompiliert oder nicht geladen werden können. Der allgemeine Refrain, wenn Sie gefragt werden, was zu tun ist, ist, Ihren Computer aufzuräumen.
Allerdings habe ich jetzt Stunden damit verbracht, meinen Computer aufzuräumen, und während alles die Datei kompiliert, muss irgendwo irgendwo veraltet sein, weil die resultierende BPL-Datei, die ich zu laden versuche, immer noch geladen werden will eine Version einer TeeChart BPL, die ich vor Tagen aus diesem System entfernt habe, zusammen mit jeder Spur, die ich finden konnte.
Die Spuren von TeeChart in Delphi 2007, die ich entfernt habe, enthalten alles im Ordner $ (BDS) \ Lib und $ (BDS) \ Lib \ debug und alle DCP- und BPL-Ordner auf dem System. Auch jede TeeChart-Einheit namens dcu-Datei ist weg.
Sobald Sie am Ende der Straße angekommen sind, was versuchst du als nächstes? (Formatieren Sie die Festplatte, kaufen Sie einen neuen Computer.) Im Ernst. Ich denke, ich bin ein kluger Typ, aber ich habe eine 1 TB Festplatte, einen Bibliothekspfad, der zu mehr als 80 Ordnern führt, und ein Quellcode-Repository, das gut organisiert zu sein scheint, aber eindeutig versteckt sich etwas, wo ich nicht kann finde es.
Ich habe TeeChart Standard 2012, mit vollem Quellcode, und soweit ich weiß, enthält meine Entwicklungsmaschine keine alten TeeChart BPLs oder DCP-Dateien mehr von der "techart tee7100.bpl" Version, die mit delphi ausgeliefert wird.
Ich habe den Assistenten "rekompile.exe" ausgeführt, der mit teechart geliefert wird, das MSBuild einfach auszuführen und die Pakete zu erstellen, nachdem eine {$ DEFINE x} -Deklaration in die tee.inc-Dateien geschrieben wurde (es gibt zwei sie in der Quellenverteilung).
Irgendwie scheint es implizit so zu sein, als ob einer der impliziten Importe in eines der Pakete eine veraltete Datei zeichnet, die nicht neu erstellt wurde und die daher versucht, das tee7100.bpl zu laden. Der neue bpl-Name lautet tee911.bpl.
Anstatt die Frage ziemlich spezifisch-zu-schnell zu stellen, erwähne ich sie nur als eine spezifische Instanz einer allgemeinen Welt der Verletzung, der ich Dutzende Male bei der Entwicklung in Delphi begegnet bin.
Ich gebe nur die Details des schnellen Berichts, so dass Sie sehen können, dass es sich tatsächlich um eine bestimmte Instanz eines allgemeinen Problems handelt, mit dem man manchmal in der Delphi-IDE konfrontiert wird, wenn es sich um einen Komponentenquellcode oder -paket handelt Pakete mit Abhängigkeiten. Bereinigen Sie Ihren Computer, so dass Ihr Code sogar baut.
So, hier ist meine Delphi-Paket-zu-Paket-Abhängigkeit auflösender Frage:
Was ist der effektivste Weg ist implizite Last-of-some-Nicht-mehr-wollte finden oder Spuren BPL-Probleme, so dass mein Code (der genau richtig baut und kompiliert!) In die Delphi IDE geladen wird. Die BPL-Datei, die aus dem Ausführen von Neukompilieren resultiert, scheint ordnungsgemäß mit den richtigen DCP-Dateien verknüpft zu sein, und keine alten/veralteten DCP- oder DCU-Dateien sind vorhanden. Der neue DCP-Dateiname lautet beispielsweise tee911.dcp.
Können Sie irgendwie, irgendeine Idee von, was Paket ist eigentlich abgestanden, und was wird gelesen und verknüpft und statisch importiert, wenn die. BPL-Links? (Ich vielleicht wie eine spezielle MAP-like-Datei für BPL-Dateien gedacht?)
aktualisierst Nach vielen Stunden mit diesem Kampf, und mit jedem Trick, den ich weiß, ich erkennen ich nicht checked for some VirtualStore
related issues hatte verursacht durch Dateivirtualisierung in Windows 7. Das bedeutet, dass Windows 7 auf den Programmen liegt, die darüber laufen. Es gibt Ihnen eine andere Version der Datei, die nicht die gewünschte ist. Dies kann in mehrfacher Hinsicht tödlich sein; Ein; Sie kompilieren einen BPL, aber das lädt nicht. Die BPL, die mich getötet hat, befand sich im SysWow64-Ordner, der Teil des VirtualStore war. Beachten Sie, dass der virtuelle Speicher grundsätzlich Phantomdateien anzeigt, die nur vorhanden sind, wenn Sie ein bestimmtes "Low-Priory" -Programm sind, was Delphi 2007 unter Win7/64 bit ist. BPL-Dateien in Ihrem SysWow64 Virtuals Ordner für das aktuelle Benutzer-Account zu entfernen:
del %HOMEPATH%\AppData\Local\VirtualStore\Windows\SysWow64\*.bpl
... An manchen Tagen hasse ich nur Windows-Architektur. Wie auch immer, ich werde das Obige nicht als Antwort verwenden, weil ich gerne wissen würde, ob jemand einen besseren Weg oder einen Tipp oder Vorschlag hat, der beim nächsten Mal helfen könnte.
Wa sind um eine Belastung des bpl in der IDE zu sprechen (dh ein Design-Zeit-Paket) sind nicht wir und nicht die Last der bpl zur laufzeit durch eine exe ihrer eigenen herstellung? –
Ja, Designtime Laden einer BPL, die ich gerade aus Quellen neu kompiliert habe, aber die etwas abgestanden sein muss, dass ich einfach nicht finden kann ... –
Angenommen, Sie haben bereits alle Ordner auf dem Systempfad Ihrer Umgebung durchsucht Suche in der Registry nach den Schlüsseln _und_ data nach dem nicht gefundenen Dateinamen.Oh, und ich würde die C: \ users \ public und c: \ users \ all Ordner überprüfen. –