GCC 相当于 /INCLUDE Visual Studio 选项
GCC equivalent to /INCLUDE Visual Studio option
在 Visual Studio 中,我可以使用 /INCLUDE (Force Symbol References) 链接器选项从 dll 中导出特定符号。 GCC 中是否有等效选项?
我正在使用 -fvisibility=hidden 进行编译,因此默认情况下不导出任何符号。
一种方法是使用 __attribute__
:
void foo() __attribute__((visibility("default")));
void foo() {
/* Implementation */
}
这应该仅覆盖此函数的 -fvisibility=hidden
参数。您也可以这样做:
class __attribute__((visibility("default"))) my_class {
public:
myClass();
~myClass();
// Other declarations...
};
这将导出整个 class 和其中包含的所有声明。
虽然符号可见性可能有效,但这并不是所问问题的完全答案。它不是链接器选项,需要修改源代码,这可能是不受欢迎的。或多或少等效于导出映射,但它仅适用于带有 GNU 链接器的 GCC。 GCC 命令行选项为
-Wl,--version-script=a.map
和a.map看起来像
{
global: a;
local: *;
}
在 Visual Studio 中,我可以使用 /INCLUDE (Force Symbol References) 链接器选项从 dll 中导出特定符号。 GCC 中是否有等效选项?
我正在使用 -fvisibility=hidden 进行编译,因此默认情况下不导出任何符号。
一种方法是使用 __attribute__
:
void foo() __attribute__((visibility("default")));
void foo() {
/* Implementation */
}
这应该仅覆盖此函数的 -fvisibility=hidden
参数。您也可以这样做:
class __attribute__((visibility("default"))) my_class {
public:
myClass();
~myClass();
// Other declarations...
};
这将导出整个 class 和其中包含的所有声明。
虽然符号可见性可能有效,但这并不是所问问题的完全答案。它不是链接器选项,需要修改源代码,这可能是不受欢迎的。或多或少等效于导出映射,但它仅适用于带有 GNU 链接器的 GCC。 GCC 命令行选项为
-Wl,--version-script=a.map
和a.map看起来像
{
global: a;
local: *;
}