這與驗證我的推理非常相似。交叉編譯器庫交互(動態加載)(插件)
無論如何,我正在開發一個支持插件(在運行時動態加載庫)的複雜項目,現在我希望能夠使用編譯器X編譯主程序,並使用編譯器Y編譯插件,和插件仍然工作。 但是我需要在插件和主程序之間傳遞複雜的數據。
所以我的理解是標準函數沒問題,編譯器無關緊要,只要我知道他們將執行相同的基本代碼的地址。
但是,當涉及到結構時,由於編譯器之間的對齊/打包方法不同,2個相同的結構可能不相同,但是我可以在大多數編譯器上使用#parama pack(n)
來覆蓋它,只要這是相同的內存這些結構的結構將匹配,因此它們可以在插件和主程序之間傳遞。
現在我相信只要沒有虛函數,並且所有成員變量都是公共的,這對基本類也是適用的。然而,我不能解除成員函數的調用約定,所以我必須通過標準函數來映射它們,該函數將對象作爲參數,或者在插件名稱空間中重新實現它們,很可能通過庫與之相關聯。
此外,只要按上述方式實現,我應該能夠爲結構體/類實現運算符和成員函數。
因此,我可以使用它來傳遞插件和程序之間的複雜數據,即使它們是用不同的編譯器編譯的。
我對我的理解正確嗎?