我有一个静态库,它公开了100个API(即,100个API列在我随库提供的各种头文件中)。
比方说,许多不同的应用程序试图使用这个库,而每个应用程序只使用这100个API中的一个子集。例如:-1\f25 Application-1 \f6使用10个-1\f25 API-1\f6,-2\f25 Application-2 \f6使用-2\f25 20 -2\f25 API-2\f6等
在此场景中,我只希望向Application-1公开10个API,向Application-2公开20个API,即我不希望向所有客户公开所有API。
其中一个解决方案是,我根据应用程序名称添加一个宏,然后在代码中自己定制它。
还有其他可用的解决方案吗?在共享库的情况下,我可以使用映射文件控制公开的API集。有没有这样的解决方案可以应用于静态库?
发布于 2013-02-27 23:53:20
大多数编译器都有控制符号可见性的方法(例如,符号是否向链接器公开)。这里有一篇关于如何在GCC中做到这一点的文章:
http://gcc.gnu.org/wiki/Visibility
您应该能够很容易地找到其他编译器的相应文档。
在可移植代码中,这通常是使用每个编译器的宏来处理的。
https://stackoverflow.com/questions/15112571
复制相似问题