我在Linux中有兩個共享庫,它們在構建時在所有方面都是相同的,只是每個公開的函數具有不同的接口(需要一些第三方數組類型和其他需要字符串)。我可以構建兩個共享庫版本,並且我想知道是否有一種方法可以將元信息插入共享庫本身(很像您如何在構建時將註釋/公司名稱/ etc插入到DLL中,然後可以在運行時查詢)。要嵌入到Linux共享庫中的信息
我不想以不同的方式命名這兩種風格的.so文件,因爲它們實際上是相同的東西,它們是更大系統的可互換部分。我需要我的代碼在庫上做一個dlopen和dlsym來知道它是什麼味道,以便它具有正確的接口。
我目前正在完成這項工作的方式是在其中一箇中添加一個名爲「Flavor_A」的非操作函數,在另一箇中添加一個「Flavor_A」。然後,我使用Flavor_A或Flavor_B來驗證我正在處理的共享庫。如果我得到一個NULL,我知道Flavor_X不存在,在這種情況下,它必定是另一種味道。
我覺得應該有更好的辦法。所以,這就是我來這裏的原因。
任何人都有如何建立一些運行時查詢信息到.so二進制本身的建議嗎?
謝謝。