我在这里阅读教程: http://www.techytalk.info/c-cplusplus-library-programming-on-linux-part-two-dynamic-libraries/
在我看来,Windows平台中没有像dllexport
DLL这样的功能。
是否有某种方法可以选择库中的某些功能作为导出功能,并使库中的其余功能对外部调用保持不可见?
答案 0 :(得分:3)
您可能想要使用GCC的visibility function attribute。
请参阅GCC visibility wikipage并阅读Drepper's paper 如何编写共享库
答案 1 :(得分:1)
有多种方法可以做到这一点。
使用Basiles中提到的visibility函数属性回答或使用链接器版本脚本来完成这项工作。
在链接描述文件中,列出要导出的所有功能。这是一个例子:
文件:MyLinkerScript.exp
{
global:
myExportedFunction1;
myExportedFunction2;
myExportedFunction3;
local: *;
};
在共享库的链接步骤中,您只需将以下额外参数传递给gcc:
-Wl,--version-script=MyLinkerScript.exp
之后,除了版本脚本的全局部分中列出的符号外,共享库中的所有符号都将是私有的。