使用boost序列化时,使用序列化头文件会出现很多错误,如下所示:
我尝试了stackoverflow中的所有可能的链接(1,2,3和其他几个)。
他们说要使用LIBS += -lboost_system
或其他格式,但boost文档说它只是一个头文件库Boost setup,这意味着它不需要任何库链接,即使我尝试在boost文件夹中搜索该库,我也找不到。
我遵循了Boost设置过程中执行的相同步骤,但是找不到任何东西。这是我正在测试的代码:
#include <fstream>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/vector.hpp>
#include <vector>
class test
{
public:
std::vector<int> test1;
std::string test2;
test()
{
}
test(std::vector<int> h, std::string i):test1(h), test2(i)
{
}
private:
friend class boost::serialization::access;
template<class Archive> void serialize(Archive & ar, const unsigned int version)
{
ar & test1;
ar & test2;
}
};
int main(int argc, char *argv[])
{
test obj;
obj.test1.push_back(1);
obj.test1.push_back(3);
obj.test1.push_back(6);
obj.test1.push_back(74);
obj.test1.push_back(43);
obj.test1.push_back(12);
obj.test1.push_back(8);
obj.test1.push_back(13);
obj.test2 ="jsahdjfkadshflkssfjdslfk";
std::ofstream file("myfile.FILE");
boost::archive::text_oarchive oo(file);
oo<<obj;
test obj1;
std::ifstream ifs("myfile.FILE");
boost::archive::text_iarchive ia(ifs);
ia >> obj1;
return 0;
}
最佳答案
boost/archive/text_iarchive.hpp
是Boost.Serialization的一部分,并且绝对是,而不是,这是仅 header 的库。
该库通常称为boost_serialization
(libboost_serialization.so
),此外,如果要与boost_wserialization
一起使用,则还需要libboost_wserialization.so
(wchar_t
)。
关于c++ - 对Boost序列化功能的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39700537/