我有一个静态库,它暴露了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集。任何这样的解决方案都可以应用于静态库吗?
答案 0 :(得分:0)
大多数编译器都有控制符号可见性的方法(即符号是否暴露给链接器)。这是一篇关于如何在GCC中做到这一点的文章:
http://gcc.gnu.org/wiki/Visibility
您应该能够轻松找到其他编译器的相应文档。
在可移植代码中,这通常使用每个编译器宏来处理。