c++ - 如何仅从 linux SO 库中导出某些函数?

标签 c++ linux dll c++11 shared-libraries

创建 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/

相关文章:

c++ - QVariant 有符号/无符号比较

c++ - 在 QDialog 中使用 QGridLayout 定位 QPushButton?

c++ - CMake 找到了 Boost 但 Make 找不到包含文件

c++ - 如何在 C++ 中逐个元素地比较两个 vector 的相等性?

linux - 如何在 Z-Admin 中创建指向端口上的服务的子域?

c - 希望 execve() 运行的可执行文件使用我预加载的库

linux - 如何在 MSBuild 中获取当前操作系统?

c# - 使用Delphi Dll和一些问题

c++ - 尝试使用 strcpy 时看到应用程序崩溃

c++ - 如何在我的 C++ 项目中包含 SQLite DLL?