Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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++ boost::system::error_code::message以-stdlib=libc++;_C++_Macos_Boost_C++11_Clang - Fatal编程技术网

C++ boost::system::error_code::message以-stdlib=libc++;

C++ boost::system::error_code::message以-stdlib=libc++;,c++,macos,boost,c++11,clang,C++,Macos,Boost,C++11,Clang,我在OS X 10.7.4下使用Boost 1.51,我发现与C++11标准库的链接会导致Boost的系统错误代码消息输出完全胡言乱语。 有人知道为什么会这样,以及如何阻止它发生吗 例如: #include <iostream> #include <boost/system/error_code.hpp> int main() { std::cout << "system_category(9): " << boost::system::

我在OS X 10.7.4下使用Boost 1.51,我发现与C++11标准库的链接会导致Boost的系统错误代码消息输出完全胡言乱语。
有人知道为什么会这样,以及如何阻止它发生吗

例如:

#include <iostream>
#include <boost/system/error_code.hpp>

int main() {
    std::cout << "system_category(9): " << boost::system::system_category().message( 9 ) << std::endl;
    std::cout << "system_category(bad_file_desc): " << boost::system::system_category().message( boost::system::errc::bad_file_descriptor ) << std::endl;
    return 0;
}

您是否也使用libc++编译了boost.system


LLVM的libc++和GNU的libstdc++不兼容ABI,所以如果你没有兼容,那可能就是罪魁祸首。

我的第一个猜测是错误的。你用
std::cout@DaveS也能得到同样的吉伯里语吗?是的,两者都有:你也用
libc++
编译过boost.system,对吧?LLVM的
libc++
和GNU的
libstdc++
不兼容ABI…@fgp就是这样,谢谢。如果你想回答,我会把它设置为正确的。(如果有人遇到这个问题,这会很有帮助)
$ c++ --version
Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.4.0
Thread model: posix

$ c++ -lboost_system -o boost_error_codes boost_error_codes.cpp -std=c++11 && ./boost_error_codes
system_category(9): Bad file descriptor
system_category(bad_file_desc): Bad file descriptor

$ c++ -lboost_system -o boost_error_codes boost_error_codes.cpp -std=c++11 -stdlib=libc++ && ./boost_error_codes
system_category(9):     ?HJ?a?Q???t??
system_category(bad_file_desc):     ??U?a?? W?a?0W?a?X  ?HJ?a?Q???t??