簡體   English   中英

delphi專家中的第三方依賴項

[英]Third party dependencies in a delphi expert

我正在寫一個delphi ide專家,有一些第三方依賴(可視化控件),我的問題是當這個專家將被安裝在目標機器上時,這台PC還需要安裝這些第三方組件嗎? 或者組件嵌入 bpl生成的內部?

它們將取決於您在包的require子句中放置的任何包。 然后他們需要的任何包,依此類推......

如果您將依賴的單位放入包裝中,則可以嵌入它們。

例:

package Package1;

...

// Items in the section mean that your package
// will depend on the BPL of the other package
// Target machine must have the BPL's listed here.
requires
  rtl;  


// Unit's here mean that the code is in your
// package and not in another BPL
contains
  Unit8 in 'Unit8.pas';

end.

謹慎的話

  • 加載了兩個包含相同名稱的單元的包。
  • 第三方組件的許可,因為商業庫通常不能重新打包為庫。
  • 開發人員可能還希望使用不同版本的第三方組件。 您需要為這些開發人員提供源代碼,以便他們可以重新鏈接您的專家。

一種避免問題的方法

  • 重命名使用的第三方單位。
  • 在包中包含重命名的單位。

我已經多次看過這種方法了。

例如Castalia這樣做,並在使用它的開源delphi詞法分析器和解析器推薦這種方法

正如Robert Love所說:依賴存在,

任何delphi項目都可以設置為使用不使用包進行編譯。 項目| 選項| 包裹| 選中或取消選中“使用運行時包構建”。

使用包構建/編譯 ,這意味着您沒有嵌入包中的代碼,您必須分發專家所依賴的bpl。 正如Robert所說:選擇此選項時,請注意有關重新分發的許可證。

當您在沒有包的情況下構建/編譯時,來自第三方控件/庫的代碼嵌入在您的可執行文件/ dll中,這就是您必須分發的全部內容。

關於BPL專家:

如果您可以避免鏈接到第三方控件的設計時版本,只堅持運行時BPL,您可以合法地將您的專家作為您的專家。

不幸的是,我不能說你可以安全地發貨,因為你正在與其他Delphi開發人員打交道:他們可能擁有相同的第三方套餐,但版本不同! 使用普通應用程序,您只需將您的BPL版本安裝到您​​的應用程序目錄中,但這不適用於Delphi IDE,因為該應用程序是IDE:IDE是加載和鏈接BPL的IDE,它可以加載相同BPL的兩個版本。 並且您無法替換用戶的版本,因為他們需要保留他們許可的版本,即使您的版本更新!

解決方案:DLL專家:

一種可能的解決方案是將您的專家編譯為DLL,而不是作為包,並靜態鏈接所有依賴項。 這樣您就不再依賴於用戶的第三方控件版本了。

暫無
暫無

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

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