0

试图运行一些示例代码。
但是意想不到的事情发生了。
我想知道关于 boost.thread 与 libc++ 一起使用有什么已知的问题吗?


-std=c++11使用或不使用选项编译的程序运行良好。

-stdlib=libc++但是当我用or编译时-std=c++11 -stdlib=libc++
,输出是这样的:

in main
in thread
bash: line 1: 37501 Segmentation fault: 11  ./a.out

编译器:
Apple LLVM 版本 4.2 (clang-425.0.28)(基于 LLVM 3.2svn)
目标:x86_64-apple-darwin12.3.0
线程模型:posix

操作系统:Mac OS X 10.8.3

示例代码非常简单:

#include "stdio.h"
#include <boost/thread/thread.hpp>

class callable
{
public:
    void operator()()
    {
        printf("in thread\n");
    }
};

int main()
{
    boost::thread t = boost::thread(callable());
    printf("in main\n");
    t.join();
    return 0;
}
4

1 回答 1

0

boost.thread 可能与 libstdc++ 相关联。libstdc++ 和 libc++ 的 ABI 不兼容。它们不应该在一个程序中同时使用。

于 2013-06-20T19:30:51.690 回答