[英]TobjectList between exe and DLL in Delphi
有人可以確認我,在exe和用Delphi編寫的dLL之間不能交換包含TobjectList的指針嗎?
Class definition shared between DLL and EXE
TCMStack = CLASS(TObject)
PRIVATE
FEquipment: TCMEquipment; /// equipement with associated constraints
FNbCoils: integer; /// coils used
FListeCoils: TCoilsList; ///coil list associaed with a stack
....
在可執行代碼中:
...
/// Transfer business information to optimisation module
/// fOptimisation is a instance of class
fOptimisation.TransfererDonneesMetiersDansOptimisation(@TStack, LEVEL_OPTIM_1, false);
@TStack的內容很好,除了TobjectList
除非使用運行時程序包,否則不能跨越模塊邊界傳遞Delphi對象。 因此,在DLL和EXE之間是不可能的。
該限制的原因是,為了跨模塊邊界傳遞對象,您需要在模塊之間共享類型。 而使用DLL和EXE是不可能的。 不同模塊之間的類型共享是運行時程序包的主要功能。
文檔解釋了這樣的限制:
庫在可導出內容方面比軟件包明顯更受限制。 庫無法導出常量,類型和普通變量。 也就是說,在庫中定義的類類型將不會在使用該庫的程序中看到。 要導出除簡單過程和功能以外的項目,建議使用軟件包。 僅在需要與其他程序進行互操作時才應考慮使用庫。
如果必須使用DLL,則需要找到其他互操作方式。 一種不錯的選擇是使用接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.