如何控制静态库中公开的API集?

时间:2013-02-27 12:49:46

标签: c build static-libraries

我有一个静态库,它暴露了100个API(即我提供的各种头文件中列出了100个API)。

假设许多不同的应用程序尝试使用此库,并且每个应用程序仅使用这100个API的子集。对于Ex:Application-1使用10个API,Application-2使用20个API等,

在这种情况下,我只希望向Application-1公开10个API,并且只有20个API公开给Application-2,即我不希望所有的API都是向所有客户展示。

其中一个解决方案是,我根据应用程序名称添加一个宏,然后在代码中自定义它。

有哪些其他解决方案?在共享库的情况下,我可以控制使用映射文件公开的API集。任何这样的解决方案都可以应用于静态库吗?

1 个答案:

答案 0 :(得分:0)

大多数编译器都有控制符号可见性的方法(即符号是否暴露给链接器)。这是一篇关于如何在GCC中做到这一点的文章:

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

您应该能够轻松找到其他编译器的相应文档。

在可移植代码中,这通常使用每个编译器宏来处理。