2013-03-19 44 views
1

有人可以確認我不可能在用Delphi編寫的exe和dLL之間交換一個包含TobjectList的指針嗎?在德爾福的exe和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

回答

5

的內容,除非你正在使用運行時包不能跨模塊邊界傳遞德爾福對象。所以,在一個DLL和一個EXE之間,這是不可能的。

此限制的原因是,爲了跨模塊邊界傳遞對象,您需要共享模塊之間的類型。這對於DLL和EXE來說是不可能的。在不同模塊之間共享類型是運行時軟件包的主要功能。

documentation解釋了限制這樣的:

圖書館是顯著比包裝更有限的,他們 可以出口的東西。庫不能導出常量,類型和正常的變量 。也就是說,在庫中定義的類類型在使用該庫的程序中不會看到 。要輸出除簡單 程序和函數之外的項目,建議使用包。 僅當需要與其他 編程的互操作性時才考慮庫。

如果您必須使用DLL,那麼您需要找到一些其他的互操作方式。一個不錯的選擇是使用接口。

+0

你是否希望超過這個答案? – 2013-03-20 07:40:58