我在最新版本的Ubuntu上通过sudo apt-get install libboost-all-dev
安装了Boost。现在我想编译一个使用Boost.Serialization
库的项目,needs to be linked。
我尝试了以下许多变体,但没有成功:
gcc -I /usr/lib code.cpp -o compiled /usr/lib/libboost_serialization.a
和
gcc -I /usr/lib code.cpp -o compiled -l libboost_serialization
错误消息是:
error: ‘split_member’ is not a member of ‘boost::serialization
`
我错过了什么?
答案 0 :(得分:1)
编译代码时遇到麻烦,而不是链接。在那个阶段,它与图书馆无关。那时你必须与某些东西联系的事实是无关紧要的。
确保直接或间接包含boost/serialization/split_member.hpp
并首先编译代码。
另外,-I
标志用于指定包含文件而不是库的路径。对于库,请使用-L
。但是如果您已经从apt安装了Boost,那么它应该已经在路径中,因此不需要额外的-I
或-L
。当你指定-l
时,你必须从库名的开头发出lib
,而不是在标志和它的参数之间放置一个空格。假设工作代码,这样的事情应该做:
g++ code.cpp -o compiled -lboost_serialization
我还建议您传递-Wall
标志以使编译器更加冗长,并警告您代码中可能存在的错误。
答案 1 :(得分:0)
split member是编译时遇到的问题,假设有序列化和反序列化的拆分调用。
http://www.ocoudert.com/blog/2011/07/09/a-practical-guide-to-c-serialization/