TL; DR:是否可以在運行時從庫中加載類對象,關閉庫然後將對象用作「普通」對象(關閉後)?從庫中動態加載類並在關閉庫之後使用它
我試圖用某種「熱插拔」功能實現插件系統。假設我的程序期望從其插件獲取doSomething()
函數。我的想法是掃描文件系統以查找特定文件夾中的任何庫,提取函數,然後關閉庫(在使用函數之前!)。這樣,監視器線程可以監視文件系統上的更改,並在發生更改時重置函數指針,從而插件可以「熱插拔」。
我相信函數指針在我關閉庫後就會失效(是這樣嗎?)。因此,我的想法是讓庫返回一個具有所需功能的對象的副本。在這種情況下,我會調用lib在關閉它之前創建該對象,並將該對象的副本保存在我的程序中。但是,由於對象可以使用庫的其他對象/函數,因此我不確定這是否可行,因爲這些對象/函數將不可用,是否它們?
可能重複的[在存儲器中複製的函數並執行它(http://stackoverflow.com/questions/4546071/copy-a-function-in-memory-and-execute-it) – Vality
我認爲這是有效的問他是否可以將函數的代碼複製到他自己的程序的內存中,這樣他就不必使用系統鏈接器,有效地編寫他自己的具有更多功能的鏈接器...... – Vality
不是真的在我看來,但感謝鏈接!由於我不知道插件的複雜程度有多複雜,所以我不知道究竟我需要加載到內存中以及它是如何構建的。 – user1228633