Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++-std=c++;11-stdlib=libc++;使用boost.thread时出现分段错误:OSX上为11_C++_Boost_C++11_Boost Thread_Libc++ - Fatal编程技术网

C++ c++-std=c++;11-stdlib=libc++;使用boost.thread时出现分段错误:OSX上为11

C++ c++-std=c++;11-stdlib=libc++;使用boost.thread时出现分段错误:OSX上为11,c++,boost,c++11,boost-thread,libc++,C++,Boost,C++11,Boost Thread,Libc++,试图运行一些示例代码。 但是发生了意想不到的事情。 我想知道boost.thread与libc++一起使用是否存在已知问题 使用-std=c++11编译的程序运行良好,或者没有选项 但是当我用-stdlib=libc++或-std=c++11-stdlib=libc++编译时 结果如下: in main in thread bash: line 1: 37501 Segmentation fault: 11 ./a.out 编译器: 苹果LLVM版本4.2(clang-425.0.28)(

试图运行一些示例代码。
但是发生了意想不到的事情。
我想知道boost.thread与libc++一起使用是否存在已知问题


使用
-std=c++11
编译的程序运行良好,或者没有选项

但是当我用
-stdlib=libc++
-std=c++11-stdlib=libc++
编译时 结果如下:

in main
in thread
bash: line 1: 37501 Segmentation fault: 11  ./a.out
编译器:
苹果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;
}
#包括“stdio.h”
#包括
类可调用
{
公众:
void运算符()()
{
printf(“线程中的\n”);
}
};
int main()
{
boost::thread t=boost::thread(callable());
printf(“主\n”);
t、 join();
返回0;
}

boost.thread可能链接到libstdc++。
libstdc++和libc++具有不兼容的ABI。它们不应该在一个程序中同时使用。

IIRC,我已经在某个地方看到过这个问题(因为我有一个类似的问题),但我不记得在哪里…:(@B我只在终端中使用了
c++
。@很快谢谢你的建议。我会尝试。你需要确保boost也配置了c++11标志。另外,除非你在寻找中断点或类似的东西,为什么不使用std::thread?@dirvine你是对的。我用c++11再次编译了boost。它运行得很好。所以这只是我使用boost的错误。谢谢。