2016-10-10 16 views
0

在基於插件的應用程序中,核心/可執行文件具有幾個插件(dll/so)應該實現的純虛擬接口類。此外,這些接口還有標準的實現,應該可以通過插件訪問。如何將主應用程序中的類導出到庫/插件?

我是否需要導出純虛擬接口?我的意思是它們只包含庫在編譯時包含的頭文件。所以我不應該在運行時需要這個符號,應該嗎?

如何將主應用程序中的類導出到插件?這是否有意義?這種情況的最佳做法是什麼?

這意味着這些符號應該在庫中未定義。我如何實現這一目標?

回答

0

純虛擬接口將包含一個虛擬析構函數,它將引導編譯器「創建」v表。

只有在一個編譯單元中創建這個v-表通常是一個好主意,有時如果您要在類上使用運行時類型信息,這是非常重要的。

在插件情況下,您可能需要「驗證」該類實現您的「接口」基類。

主應用程序可以掛鉤到允許插件添加一些自己的「模型」中,如果您以允許以多種方式添加它們的方式編寫它的方式。

+0

確實我需要RTTI。這是否意味着我應該導出接口?我仍然不知道如何從主應用程序中導出它們。 – ManuelSchneid3r

+0

如果你這樣做,你會把接口放到某個庫中,並讓你的應用程序和插件包含和鏈接它們。 我非常想誘您去https://github.com/dotfield/ioc – CashCow

相關問題