gpt4 book ai didi

c++ - 在 ubuntu 上使用 libc++ 对 `__dynamic_cast' 的 undefined reference

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

我正在尝试使用 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 上编译 libc++abi is another issue itself .

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

如果这确实是问题所在,是否有在 linux 上使用 libc++ 的直接过程可以编译该短片段,还是只是尚不支持?

最佳答案

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

关于c++ - 在 ubuntu 上使用 libc++ 对 `__dynamic_cast' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16271976/

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