2011-09-22 43 views
1

我有一個應用程序和一個DLL,包括書面在Delphi 2006使含有重寫虛擬方法的類,以一個dll

我有從基類下降並改變了幾個虛擬方法的類。

該類通過導出的方法傳遞給DLL,導出的方法只知道基類。我從DLL中調用類中的方法,重寫的方法不會被調用。

有什麼我需要做的,讓這個工作?是不是可能?

+3

第一個問題是:你爲什麼使用DLL而不是Package/BPL? –

+0

我原本沒有編寫DLL或應用程序,但我需要將類傳入它。 –

+0

請顯示無效的實際代碼。 –

回答

5

您不能在一個模塊中創建一個對象並在其他模塊中調用其方法。按照模塊我的意思是.exe/.dll。

如果你想跨越這樣的邊界,那麼你需要使用包,COM或免費函數。軟件包看起來很誘人,但將您綁定到系統中的所有軟件包使用相同的編譯器。如果這對你沒有限制,那就繼續使用包。否則使用COM或免費功能。

+0

你是什麼意思的免費功能? –

+0

我的意思是不屬於一個類的功能。如果您從DLL導入,則無法在邊界的一側創建對象並在另一側調用其方法。 –

+0

是的,您可以通過DLL邊界調用調用類的方法,尤其是因爲EXE和DLL都使用相同的編譯器編寫。不過,更好的選擇是使用Interface而不是基類。 –

相關問題