【发布时间】:2021-07-27 17:24:53
【问题描述】:
我有一个 C++ 动态库,它定义了全局符号 - 函数。当我使用 gcc 编译库时,这些符号默认是可见的。当应用程序链接到几个库时,可能会导致符号冲突。我可以将函数放入命名空间并使用编译标志-fvisibility=hidden 隐藏私有函数。那么 API 函数应该包含以下属性:__attribute__ ((visibility ("default")))
假设我在 Windows 上使用 Microsoft Visual Studio 编译器编译了一个动态库。
有些符号没有用__declspec(dllexport)定义是不是意味着那些符号会被隐藏?
【问题讨论】:
-
您是否尝试将 GCC 和 ELF 共享对象与 MSVC 和 Windows DLL 进行比较?还是只是具有不同编译器的 Windows DLL?还是别的什么?
-
如问题描述中所述:GCC 和 ELF 共享对象 vs MSVC 和 Windows DLL。
标签: c++ dll shared-libraries symbols visibility