未定义的参考`__dynamic_cast”使用的libc ++ ubuntu上(undefined

2019-09-01 07:53发布

我试图编译使用测试用例dynamic_cast使用的libc ++,这是根据编制“使用CMake和libsupc ++在Linux上构建” 。

#include <iostream>

struct A
{
    virtual void f(){ std::cout << "Virtual A" << std::endl; }
    virtual ~A(){}
};

struct B : public A
{
    void f() { std::cout << "Virtual B" << std::endl; }
    virtual ~B(){}
};

int main()
{
    A *a = new B;
    B *b = dynamic_cast<B *>(a);
    delete a;
}

我在Ubuntu 13.04与编译clang++ -std=c++11 -stdlib=libc++

为什么我越来越undefined reference to '__dynamic_cast' ? 如何解决呢?

编辑

看起来有一些做的libc ++ ABI ,因为我看到__dynamic_cast在规范的原型 。 我预计libsupc++第一个构建选项没有这样的问题需要解决......并试图编译的libc ++ ABI在Linux上是另一个问题本身 。

这似乎与使用libc库锵++未定义的引用编译 。

如果这确实是问题,是有办法使用Linux上的libc ++可以编译一小段一个简单的过程,或者它只是尚不支持?

Answer 1:

我会建议使用libcxxrt更换漂亮的Mac特定libc++abi (该网站说,只有达尔文的支持)。 它提供了BSD的铛+的libc ++设置一个工作实现,我相信它已被用于在Linux上的成功也是如此。



文章来源: undefined reference to `__dynamic_cast' using libc++ on ubuntu