Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何仅从linux SO库导出某些函数?_C++_Linux_Dll_C++11_Shared Libraries - Fatal编程技术网

C++ 如何仅从linux SO库导出某些函数?

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可见性

创建Windows DLL时,可以轻松选择导出的符号(使用dllexport)。在这种情况下,未导出的符号在库外部不可见。如何在Linux上获得相同的功能? 换言之:
假设我在一个项目中有10个功能。其中三个应该导出,其余7个是辅助函数,不应该从库API中使用。如何以这样的方式创建SO文件,从而实现此目的?

在Linux/GCC上,默认情况下,所有内容都会导出(当然,这取决于语言规则:匿名命名空间中的某些内容永远不会导出)

如果要停止导出符号,可以使用
\uuuuuuuuu属性((\uuuuu可见性(“隐藏”))
。例如:

__attribute__((__visibility__("hidden"))) void myPrivateFunction();
假设您使用的是GCC,应该会有所帮助。