【问题标题】:undefined reference to `__dynamic_cast' using libc++ on ubuntu在 ubuntu 上使用 libc++ 对“__dynamic_cast”的未定义引用
【发布时间】:2013-04-22 17:24:45
【问题描述】:

我正在尝试使用 libc++ 编译一个使用dynamic_cast 的测试用例,它是根据"Build on Linux using CMake and libsupc++" 编译的。

#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 since I'm seeing __dynamic_cast prototype in the spec 有关。我希望 libsupc++ 第一个构建选项能够在没有此类问题的情况下工作......并尝试在 linux is another issue itself 上编译 libc++abi。

这似乎与Compiling with Clang using Libc++ undefined references有关。

如果这确实是问题所在,是否有一个简单的过程可以在 linux 上使用 libc++ 来编译那个简短的 sn-p,或者它还不支持?

【问题讨论】:

    标签: c++ linux linker clang libc++


    【解决方案1】:

    我建议使用libcxxrt 替换漂亮的Mac 专用libc++abi(网站上说只支持Darwin)。它为 BSD 的 Clang+libc++ 设置提供了一个工作实现,我相信它也已在 Linux 上成功使用。

    【讨论】:

      猜你喜欢
      • 2015-06-02
      • 2014-05-24
      • 2017-10-13
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      相关资源
      最近更新 更多