在Visual Studio中,我可以使用/INCLUDE (Force Symbol References)链接器选项获取从dll导出的特定符号。 GCC中是否有相同的选项?等效于/ INCLUDE Visual Studio选项的GCC
我正在编译-fvisibility = hidden,所以默认情况下不会导出符号。
在Visual Studio中,我可以使用/INCLUDE (Force Symbol References)链接器选项获取从dll导出的特定符号。 GCC中是否有相同的选项?等效于/ INCLUDE Visual Studio选项的GCC
我正在编译-fvisibility = hidden,所以默认情况下不会导出符号。
尽管符号可见性可能有效,但它并不完全是所问问题的答案。它不是链接器选项,需要修改源文件,这可能是不可取的。或多或少相当于导出地图,但它仅适用于具有GNU链接器的GCC。 GCC命令行选项将
-Wl,--version-script=a.map
与a.map看起来像
{
global: a;
local: *;
}
一种方式做到这一点是使用__attribute__
:
void foo() __attribute__((visibility("default")));
void foo() {
/* Implementation */
}
这应该重写你的-fvisibility=hidden
参数仅此功能。您也可以这样做:
class __attribute__((visibility("default"))) my_class {
public:
myClass();
~myClass();
// Other declarations...
};
这会导出整个类和其中包含的所有声明。