2

我有一个静态库,它公开了 100 个 API(即 100 个 API 列在我与库一起提供的各种头文件中)。

比方说,许多不同的应用程序尝试使用这个库,每个应用程序只使用这 100 个 API 的一个子集。例如:Application-1 使用 10 个 API,Application-2 使用 20 个 API,等等

在这种情况下,我希望只有 10 个 API 向 Application-1 公开,只有 20 个 API 向 Application-2 公开,即我不希望所有 API 向所有人公开顾客们。

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

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

4

1 回答 1

0

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

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

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

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

于 2013-02-27T15:53:19.657 回答