在Windows下生成DLL时,可以使用dll_export来将需要对外的符号导出来。

__declspec(dllimport)

而在Linux中,默认是所有的符号都是导出的,只有使用了相应的attribute才能将不想导出的(库内部使用的)的符号隐藏起来。

__attribute__((visibility("hidden")))

下面来对比一下,前面一段是默认的输出,后面一段是在类前添加了hidden限制的输出: