我尝试在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
感谢任何帮助
答案 0 :(得分:3)
您需要添加boost_system库:
-lboost_system
到你的构建命令。请注意,您还需要提供-lboost_system库。
如果您的项目此后构建,但呻吟与
dyld: Library not loaded: libboost_filesystem.dylib
你只需要设置环境变量
DYLD_LIBRARY_PATH
包含您的
$BOOST_HOME/lib
提到的目录here。
答案 1 :(得分: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
在
-I
标记指向Boost标头的位置-L
标志指向Boost库的位置-lboost_filesystem
和-lboost_system
标志启用了二进制文件与Boost Filesystem和System共享库的链接。 (那些应该总是在对象或源文件之后)例如:
#include <boost/filesystem.hpp>
int main() {
boost::filesystem::path path_household_csv("./test");
}