如何在Xcode中导出虚拟破坏者
How to export the virtual destructor in Xcode?
我正在研究一个带有两个模块的示例项目:a和b(链接到a),使用xcode 4.4。
在模块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,并且添加虚拟驱动器可以更改(如果您没有其他虚拟功能)。
相关文章:
- 虚拟决赛作为安全
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- 如何在C++中获得"静态纯虚拟"功能?
- C++无法定义虚拟函数 OUTER 类和头文件
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 为什么我的虚拟破坏者多次执行这些执行
- 纯抽象类的虚拟破坏者
- 与虚拟破坏者相比,Shared_PTR的运行时开销用于子类破坏
- 虚拟破坏者与普通破坏者
- 删除具有非虚拟破坏者的对象将引起
- 在C 中,是否有一种(新的)方法来测试类是否在模板中具有虚拟破坏者而无需实例化实例
- 没有虚拟功能,但仍然需要虚拟破坏者
- 当试图检测基类是否具有虚拟破坏者时,如何获取正确的编译器错误消息
- 获取虚拟破坏者的重新定义错误
- 非造晶和非抽象基类中的虚拟破坏者
- 如何在Xcode中导出虚拟破坏者
- 虚拟破坏者:不工作