0

sudo apt-get install libboost-all-dev我在最新版本的 Ubuntu 上安装了 Boost via 。现在我想编译一个使用该Boost.Serialization库的项目,它需要被链接

我尝试了以下许多变体,但均未成功:

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

`

我错过了什么?

4

2 回答 2

1

您在编译代码而不是链接时遇到问题。在那个阶段,它与图书馆无关。那时,您必须链接到某些东西的事实是无关紧要的。

确保您boost/serialization/split_member.hpp直接或间接包含并首先编译您的代码。

附带说明,-I标志用于指定包含文件而不是库的路径。对于库,使用-L. 但是,如果您已经从 apt 安装了 Boost,那么它应该已经在路径中,因此不需要额外-I-L不需要。并且当您指定时-l,您必须lib从库名称的开头发出,并且不要在标志及其参数之间放置空格。假设工作代码,这样的事情应该做:

g++ code.cpp -o compiled -lboost_serialization

我还建议您传递-Wall标志以使编译器更加详细,并警告您代码中可能存在的错误。

于 2012-06-20T21:19:36.653 回答
0

拆分成员是编译的问题,其中 boost 假设存在对序列化和反序列化的拆分调用。

http://www.ocudert.com/blog/2011/07/09/a-practical-guide-to-c-serialization/

于 2012-06-20T21:23:32.190 回答