0

我尝试在我的 Mac 上使用 boost 文件系统。我只添加了以下标头并在尝试编译时出错

# include <boost/filesystem.hpp>

错误是

Undefined symbols for architecture x86_64:
"boost::system::generic_category()", referenced from:
__static_initialization_and_destruction_0(int, int) in cclyDZox.o
"boost::system::system_category()", referenced from:
__static_initialization_and_destruction_0(int, int) in cclyDZox.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

任何帮助表示赞赏

4

2 回答 2

3

您需要添加 boost_system 库:

-lboost_system

到您的构建命令。请注意,您还需要提供 -lboost_system 库。

如果您的项目此后构建但抱怨类似

dyld: Library not loaded: libboost_filesystem.dylib

你只需要设置环境变量

DYLD_LIBRARY_PATH

包括你的

$BOOST_HOME/lib

这里提到的目录。

于 2013-03-14T09:26:49.167 回答
1

我认为你应该这样做

g++ -I~/Documents/boost_1_53_0/include -L~/Documents/boost_1_53_0/stage/lib -std=c++11 test1ver1.cpp -lboost_filesystem -lboost_system

  • -Iflag 指向 Boost 标头所在的位置
  • -Lflag 指向 Boost 库所在的位置
  • -lboost_filesystem-lboost_system标志启用了您的二进制文件和 Boost Filesystem 和 System 共享库的链接。(那些应该总是在对象或源文件之后)

例如:

#include <boost/filesystem.hpp>

int main() {
   boost::filesystem::path path_household_csv("./test");
}
于 2013-03-04T09:53:40.513 回答