2013-02-27 20 views
2

我有一個靜態庫,它公開了100個API(即,100個API被列在我隨庫提供的各種頭文件中)。如何在靜態庫中控制暴露的API集?

比方說,許多不同的應用程序試圖使用這個庫,每個應用程序只使用這100個API的一個子集。例如:應用程序1使用10個API,應用程序2使用20個API等等。

在這種情況下,我只想將10個API暴露給Application-1,只有20個API (s)將暴露給Application-2,即我不希望所有的API都暴露給所有的客戶。

其中一個解決方案是,我添加了一個基於應用程序名稱的宏,然後在代碼中將我的自我定製。

還有哪些其他解決方案?在共享庫的情況下,我可以使用映射文件控制公開的一組API。任何這樣的解決方案可以應用於靜態庫?

回答

0

大多數編譯器都有控制符號可見性的方法(即符號是否暴露給鏈接器)。下面是關於如何做到這一點在GCC的文章:

http://gcc.gnu.org/wiki/Visibility

你應該能夠很容易地找到相應的文件爲其他編譯器。

在便攜式代碼中,這通常使用每個編譯器宏來處理。

+0

我以前遇到過這個。但是,據我所知,這對靜態庫沒有幫助。請澄清我的理解是否錯誤。謝謝。 – Jay