创建 Windows DLL 时,可以轻松选择导出的符号(使用 dllexport)。在这种情况下,未导出的符号在库外是不可见的。如何在 Linux 上获得相同的功能? 换句话说: 假设我在一个项目中有 10 个函数。其中三个应该导出,其余 7 个是不应从库 API 中使用的辅助函数。我如何以这种方式创建 SO 文件,让我实现它?
最佳答案
在 Linux/GCC 上默认导出所有内容(当然,取决于语言规则:永远不会导出匿名命名空间中的内容)。
如果你想阻止一个符号被导出,你可以使用__attribute__((__visibility__("hidden")))
。例如:
__attribute__((__visibility__("hidden"))) void myPrivateFunction();
关于c++ - 如何仅从 linux SO 库中导出某些函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18343310/