将导出的符号保留在共享库中

时间:2014-06-16 15:25:31

标签: c++ linux linker shared-libraries

我必须遗漏一些微不足道的东西。我想声明一个导出类 - 只是模块中的几个类之一。它不会在同一个库中的任何位置使用,因此链接器会将其剥离。给所有hidden可见性和导出的default提供信息无助于哄骗链接器。

如果我告诉链接器--whole-archive,它会抱怨完全不相关的函数的多个定义。此外,我不想出口所有东西 - 只有一个班级。

#pragma GCC visibility push(default)
class C { public: C() { } };
#pragma GCC visiblity pop

// with this line the class is exported
// without it — it does not
delete new C();
// the line does nothing useful,
// just references the constructor

1 个答案:

答案 0 :(得分:0)

事实证明,尽管可以指示CUDA的nvcc编译器使用gcc进行编译,但它仍然会进行链接。它不像gcc那样做。