我想在C++中創建模塊化應用程序。靜態鏈接時一切正常,但我想實現插件架構(使用dlopen或LoadLibrary)。C++繼承和動態庫加載
所有基類都位於主機apllication中,並且這些類在插件模塊中進行了擴展。模塊在運行時加載。
Application Module
---------------- -------------------
| BaseClass1 | | ExtendedClass1 |
| BaseClass2 | | ExtendedClass2 |
| BaseClass3 | | ExtendedClass3 |
---------------- -------------------
但是當我嘗試編譯模塊時,鏈接器顯然找不到對BaseClass方法的引用。
我可以告訴鏈接器不要在編譯時鏈接這些類,讓操作系統在運行時加載鏈接它們嗎? 或者我應該使用不同的方法並將BaseClass移動到某個核心庫,並將應用程序和模塊鏈接到此核心庫?
是的,我知道這一點。我做了一些實驗,並且我正在加載返回指向對象實例的指針的函數。我也認爲最好有核心庫,因爲我以後可以將CLI應用程序更改爲GUI,而不需要將類移動到新的類。 – chatoooo