C++ 如何仅从linux SO库导出某些函数?
创建Windows DLL时,可以轻松选择导出的符号(使用dllexport)。在这种情况下,未导出的符号在库外部不可见。如何在Linux上获得相同的功能? 换言之:C++ 如何仅从linux SO库导出某些函数?,c++,linux,dll,c++11,shared-libraries,C++,Linux,Dll,C++11,Shared Libraries,创建Windows DLL时,可以轻松选择导出的符号(使用dllexport)。在这种情况下,未导出的符号在库外部不可见。如何在Linux上获得相同的功能? 换言之: 假设我在一个项目中有10个功能。其中三个应该导出,其余7个是辅助函数,不应该从库API中使用。如何以这样的方式创建SO文件,从而实现此目的?在Linux/GCC上,默认情况下,所有内容都会导出(当然,这取决于语言规则:匿名命名空间中的某些内容永远不会导出) 如果要停止导出符号,可以使用\uuuuuuuuu属性((\uuuuu可见性
假设我在一个项目中有10个功能。其中三个应该导出,其余7个是辅助函数,不应该从库API中使用。如何以这样的方式创建SO文件,从而实现此目的?在Linux/GCC上,默认情况下,所有内容都会导出(当然,这取决于语言规则:匿名命名空间中的某些内容永远不会导出) 如果要停止导出符号,可以使用
\uuuuuuuuu属性((\uuuuu可见性(“隐藏”))
。例如:
__attribute__((__visibility__("hidden"))) void myPrivateFunction();
假设您使用的是GCC,应该会有所帮助。