由于" _fchmodat"使用boost :: filesystem失败在mac上

时间:2014-12-24 11:42:52

标签: c++ macos boost filesystems

我想使用boost::filesystem的一些功能。

我可以包含boost/filesystem.hppboost/filesystem/path.hpp而没有任何问题,但只要我使用某些特定功能boost::filesystem::current_path()boost::filesystem::initial_path(),我就会收到以下编译错误:< / p>

Undefined symbols for architecture x86_64:
"_fchmodat", referenced from:
boost::filesystem::detail::permissions(boost::filesystem::path const&,
boost::filesystem::perms, boost::system::error_code*) in 
libboost_filesystem.a(operations.o)
ld: symbol(s) not found for architecture x86_64

我正在关联-lboost-system-lboost-filesystem,我正在使用-std=c++0x作为编译器代码。

提升的版本是通过自制软件安装的1.56.0。

编辑:我也尝试使用 boost 1.57.0 ,但错误是一样的。

3 个答案:

答案 0 :(得分:1)

更新:这将在即将推出的Boost 1.60中修复。我的修复已经提交到Boost.Filesystem develop branch。您也可以将patch应用于早期版本的Boost。

原始回答: 这是Boost.Filesystem中的一个错误,跟踪为Boost Ticket #10591。我遇到了同样的问题并开发了一个我附加到bug的补丁。

如果您可以将修补程序应用于Boost.Filesystem来源的副本并报告它现在是否适合您,那就太棒了。

答案 1 :(得分:0)

对我来说这看起来像是一个Boost错误。静态链接与动态链接这些库之间应该没有区别。 Someone posted a fix here但没有解释发生了什么。

请注意,问题仍然存在于Boost 1.58中,这是撰写本文时的当前版本。

答案 2 :(得分:-1)

显然,Qt Creator与libboost-system.alibboost-filesystem.a相关联。但在Mac OS X上,它应该链接到libboost-system.dyliblibboost-filesystem.dylib

我通过使用.dylib显式链接LIBS += "path/libboost-system.dylib" - 库,在 .pro 文件中更改了此内容。这解决了这个问题。