gpt4 book ai didi

c++ - 如何在 Xcode 中导出虚拟析构函数?

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:28 24 4
gpt4 key购买 nike

我正在使用 Xcode 4.4 开发一个包含两个模块的示例项目:A 和 B(链接到 A)。

在模块 A 中,符号被编译器标志 -fvisibility=hidden 隐藏。我有一个类,其析构函数是虚拟的并已导出:

class utx
{
int mm;
public:
__attribute__ ((visibility("default"))) utx(int m);
__attribute__ ((visibility("default"))) virtual ~utx();
};

它被实现为:

utx::utx(int m) : mm(m) { }
utx::~utx() { }

在模块 B 中,MyUtx 派生自 utx,如下所示:

class MyUtx : public utx
{
public:
MyUtx() : utx(5) { }
virtual ~MyUtx() { }
}Ins;

同时,我总是收到模块 B 的以下链接错误:

Undefined symbols for architecture x86_x64:
"typeinfo for utx", referenced from:
typeinfo for MyUtx in main.o

如果 utx 的析构函数是非虚拟的,问题就会消失。

最佳答案

你试过吗:

class __attribute__ ((visibility("default"))) utx
{
...

根据 http://gcc.gnu.org/wiki/Visibility typeinfo 的生成取决于你的类是否有 vfptr 并且添加虚拟析构函数可以改变它(如果你没有其他虚函数)。

关于c++ - 如何在 Xcode 中导出虚拟析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13083799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com