在Visual Studio中,我可以使用/INCLUDE (Force Symbol References)链接器选项从dll导出特定符号。海湾合作委员会是否有同等选择权?
我使用-fvisibility = hidden进行编译,因此默认情况下不会导出符号。
答案 0 :(得分:1)
一种方法是使用__attribute__
:
void foo() __attribute__((visibility("default")));
void foo() {
/* Implementation */
}
这应该仅覆盖此功能的-fvisibility=hidden
参数。你也可以这样做:
class __attribute__((visibility("default"))) my_class {
public:
myClass();
~myClass();
// Other declarations...
};
这会导出整个类及其中包含的所有声明。
答案 1 :(得分:1)
虽然符号可见性可能起作用,但问题的答案却不尽如人意。它不是链接器选项,需要源修改,这可能是不合需要的。或多或少等效的是导出映射,但它仅适用于具有GNU链接器的GCC。 GCC命令行选项是
-Wl,--version-script=a.map
带有a.map的看起来像
{
global: a;
local: *;
}
的更多信息