有一組插件的一個應用程序,所有鏈接到一個共同的基礎庫。基礎庫定義了一個單例,它維護着每個插件中所有對象構造函數的列表。我如何創建共享庫的具體實例單
在windows上,我可以創建這個基本庫作爲一個靜態庫,因此單例的副本放置在每個插件中。 但是在Linux上我有一點相反的問題as this fellow.
我已經試過到目前爲止以下內容:
- 建基地作爲共享庫(按照原作者)
- 建基地作爲靜態與-fPIC
- 建基地與-fPIC爲靜態,明確的CMake刪除-rdynamic
我真的想保持程序結構與現在一樣,通過讓singleton定義駐留在基本庫內部,讓每個插件擁有自己的實例。我已經嘗試將定義移到每個插件中,但我真的很想避免這種情況。 本質上我想重現他認爲的一個錯誤。但是他完全定義在一個頭文件,它是有道理的,我認爲每個插件會再有它自己的類的實例化他的單,我就另一方面也要編入基礎庫單身的定義。
另一個機會是[使用可見性編譯指示](https://gcc.gnu.org/onlinedocs/gcc/Visibility-Pragmas.html)。 – yugr
謝謝你的迴應,我會在接下來的幾天裏進行測試,並確認這是否適合我的工作。 –
經過測試和驗證,這適用於我想要做的事。非常感謝。 –