簡體   English   中英

安裝Delphi軟件包由於缺少rtl170.bpl而獲得錯誤

[英]Install Delphi Package get error for missing rtl170.bpl

目前,我將一個項目從Delphi XE遷移到XE8。 我們使用一個組件,但是最新版本是XE3的版本,因此我將代碼進行更改並對其進行更改,直到編譯為止。 現在,我想安裝設計時軟件包,但出現了rtl170.bpl丟失的錯誤。 沒有人將rtl170僅引用到rtl庫。 我閱讀了一些有關運行時軟件包的信息,但在該項目中,我在項目選項的軟件包下沒有此菜單項。 有什么建議嗎? 以前在此計算機上安裝了Delphi XE,但在安裝XE8之前我先將其卸載。

是XE3的代碼,因此我將代碼更改為可編譯的代碼

通常,組件由兩個BPL文件,一個運行時包和一個設計時包(使用運行時包)組成。 組件庫(例如Raize,JediVCL,DevExpress等)由數十個BPL對組成。

采取一些工具來檢查DLL依賴關系(例如:CFF Explorer或Microsoft Dependency Walker或WLX FileInfo)並檢查組件BPL-您必須確定組件的BPL是哪一個需要rtl170.bpl DLL

使用諸如SysInternals Process Monitor之類的日志記錄BPL加載或僅掃描所有磁盤上的那些BPL名稱可能是一個有用的想法。 您可能會遇到類似這樣的情況:

  1. 您嘗試安裝的新建設計時BPL(沒有指向rtl170的鏈接)
  2. 新建的運行時BPL(也沒有指向rtl170的鏈接)
  3. 較早的運行時BPL,由XE3構建並參考rtl170。 如果存在,則(1)BPL可能會找到並加載(3)而不是(2),因此無論您要重新編譯(2)有多少,它都不會起作用。

那只是一種可能的混淆情況,但是肯定會發生。 確保沒有舊的xe3制造的BPL遺留物。

有時只是查找和刪除舊的BPL修復問題(例如-修復XD2的upd4 :-D)。

對於其余的內容,我們認為您發現的不是舊的惡意BPL,而您卻發現新的XE8編譯的BPL仍參考rtl170。

然后,如果您有該組件的完整源代碼-刪除(或暫時移走)所有DCP / DCU文件並從所有軟件包的源代碼強制編譯可能會有所幫助。 同樣,您可以使用SysInternals Process Monitor之類的工具來快照Delphi編譯程序包的文件訪問日志。 有時它表明,由於種種原因,您的德里忽略了DPK / PAS源文件,而改用舊的DCU / DCP進行編譯。

確實,XE8與XE3的DCU / DCP兼容的可能性很小,但這仍然是研究您的情況的途徑之一。

現在,我們假設您的組件中沒有任何dcu / dcp / bpl文件,而這些文件明確位於Delphi可以訪問的HDD上。 假設您是編譯組件的唯一方法-從源代碼中100%完成。

閱讀此內容: http : //docwiki.embarcadero.com/RADStudio/zh/Compiler_directives_for_libraries_or_shared_objects_%28Delphi%29

可能是-這些設置位於有問題的軟件包的.DPK文件(或任何其他Pascal源文件)中,或位於有問題的軟件包的.DPROJ文件中(然后可以在IDE項目的“選項”對話框中或通過任何XML編輯器進行訪問)。 或有時在DPROJ和PAS / DPK文件中。

您將找到這些設置並將其從m170固定為xe8 BPL的實際后綴

我遇到了同樣的問題,花了我一段時間才找到解決方案。 我當前的Delphi版本是XE6,但是當我嘗試安裝特定的BPL時,它一直想使用rtl170。 BPL編譯正常,但無法安裝。 機器上曾經有XE3的副本,但我已將其卸載。

原來,我在C:\\ Windows \\ sysWOw64中具有同一運行時BPL的舊副本。 一旦刪除了sysWOw64中的副本,XE6就不再抱怨了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM