我必须遗漏一些微不足道的东西。我想声明一个导出类 - 只是模块中的几个类之一。它不会在同一个库中的任何位置使用,因此链接器会将其剥离。给所有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
答案 0 :(得分:0)
事实证明,尽管可以指示CUDA的nvcc编译器使用gcc进行编译,但它仍然会进行链接。它不像gcc那样做。