GCC等效于/INCLUDE Visual Studio选项

khbbv19g  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(146)

在Visual Studio中,我可以使用/INCLUDE (Force Symbol References)链接器选项从dll中导出特定的符号。GCC中有等价的选项吗?
我使用-fvisibility=hidden进行编译,因此默认情况下不会导出任何符号。

t3irkdon

t3irkdon1#

虽然符号可见性可能会起作用,但它并不是问题的答案。它不是一个链接器选项,需要修改源代码,这可能是不希望的。或多或少等效于导出Map,但它只适用于带有GNU链接器的GCC。GCC命令行选项将是

-Wl,--version-script=a.map

看a.map起来像是

{
     global: a;
     local: *;
 }

更多信息,请访问http://www.akkadia.org/drepper/dsohowto.pdf

eeq64g8w

eeq64g8w2#

一种方法是使用__attribute__

void foo() __attribute__((visibility("default")));

void foo() {
  /* Implementation */
}

这应该只会覆写这个函式的-fvisibility=hidden参数。您也可以这样做:

class __attribute__((visibility("default"))) my_class {
  public:
    myClass();
    ~myClass();

    // Other declarations...
};

这将导出整个类和其中包含的所有声明。

相关问题