부스트 직렬화 라이브러리를 실험 중이며 대부분 작동하고 있습니다. 유일한 문제는 별도의 .h 및 .cpp 파일이있는 개체를 serialize하려고 할 때입니다. 내가이 명령을 사용하여 컴파일 할 때 :별도의 .h 및 .cpp 파일을 사용하여 직렬화를 향상하십시오.
/tmp/cc8kbW6J.o: In function `void boost::serialization::access::serialize<boost::archive::text_oarchive, Class>(boost::archive::text_oarchive&, Class&, unsigned int)':
boostSerialize.cpp:(.text._ZN5boost13serialization6access9serializeINS_7archive13text_oarchiveE5ClassEEvRT_RT0_j[void boost::serialization::access::serialize<boost::archive::text_oarchive, Class>(boost::archive::text_oarchive&, Class&, unsigned int)]+0x25): undefined reference to `void Class::serialize<boost::archive::text_oarchive>(boost::archive::text_oarchive&, unsigned int)'
이 내 .H에서 무엇 :
g++ boostSerialize.cpp Class.cpp -lboost_serialization
을 난이 오류가
#ifndef CLASS_H
#define CLASS_H
#include <iostream>
#include <string>
#include <boost/serialization/access.hpp>
using namespace std;
class Class{
friend class boost::serialization::access;
int a,b,c;
string stringy;
template<class Archive>
void serialize(Archive &ar, const unsigned int);
public:
Class(int ab, int bb, int cb);
};
#endif
내 .CPP :
#include <iostream>
#include "Class.h"
using namespace std;
Class::Class(int ab, int bb, int cb){
a = ab;
b = bb;
c = cb;
stringy = "Text";
}
template<class Archive>
void Class::serialize(Archive &ar, const unsigned int){
ar & a & b & c & stringy;
}
대신 모든 것을 넣으려고했습니다. .cpp에. 그리고 그것을 포함하고 그것은 잘 작동했다. 그래서 나는 그것이 .h 포함과 관련이 있다는 것을 안다. 어떤 이유로 그것은 serialize 함수를 찾지 못하고 있습니까? 나는 둘 다 대신 .cpp를 사용할 수있을 것 같지만 조직을 좋아하고 큰 프로젝트에 이것을 사용하고 싶습니다. 아이디어가 있으십니까? 미리 감사드립니다.
http://www.parashift.com/c++-faq-lite/templates.html#faq-35.15 –