簡體   English   中英

在Ubuntu上使用libc ++對`__dynamic_cast'的未定義引用

[英]undefined reference to `__dynamic_cast' using libc++ on ubuntu

我正在嘗試使用libc ++編譯使用dynamic_cast的測試用例,該用例是根據“使用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++第一個構建選項可以正常工作,而不會出現此類問題……而嘗試在linux上編譯libc ++ abi 本身就是另一個問題

這似乎與使用Libc ++未定義引用進行Clang編譯有關。

如果確實是問題所在,是否有直接的方法可以在Linux上使用libc ++來編譯該簡短代碼段,還是尚不支持?

我建議使用libcxxrt代替漂亮的Mac專用的libc++abi (網站上說僅支持Darwin)。 它為BSD的Clang + libc ++設置提供了可行的實現,我相信它在Linux上也已成功使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM