我試圖用一個std::wstring變數序列化一個類,但我得到的是多個undefined reference to ~ 錯誤。
我似乎沒有遺漏任何標題或庫,并且從我從boost::serialization檔案中讀取的內容來看,std::wstring似乎是一種不需要任何覆寫的原始型別。
我已經包含了以下標題:
#include <boost/archive/text_woarchive.hpp>
#include <boost/archive/text_wiarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/vector.hpp>
#include <iostream>
#include <sstream>
#include <string>
#include <locale>
我試圖序列化的類如下所示:
class A
{
public:
A() = default;
void setWstr(const std::wstring &wstr)
{
wstr_ = wstr;
}
const std::wstring &getWstr()
{
return wstr_;
};
private:
std::wstring wstr_;
friend class boost::serialization::access;
template <typename Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar &boost::serialization::make_nvp("wstr", wstr_);
}
};
int main()
{
std::wstring sdn = L"src dept";
A test;
test.setWstr(sdn);
std::wstringstream ss;
boost::archive::text_woarchive oa(ss);
oa << test;
return 0;
}
我得到的錯誤是這些:
in function `text_woarchive_impl':
undefined reference to `boost::archive::basic_text_oprimitive<std::basic_ostream<wchar_t, std::char_traits<wchar_t> > >::basic_text_oprimitive(std::basic_ostream<wchar_t, std::char_traits<wchar_t> >&, bool)'
in function `text_woarchive_impl':
undefined reference to `boost::archive::basic_text_oarchive<boost::archive::text_woarchive>::init()'
`~text_woarchive_impl':
undefined reference to `boost::archive::basic_text_oprimitive<std::basic_ostream<wchar_t, std::char_traits<wchar_t> > >::~basic_text_oprimitive()'
有沒有辦法來解決這個問題?
ETA)我已經鏈接了以下庫
-lboost_serialization -lpthread -lboost_system -lboost_program_options -lboost_chrono
uj5u.com熱心網友回復:
序列化物件被分為兩個庫:boost_serialization(您鏈接對)和相應的物件wchar中等等boost_wserialization。因此,您需要添加-lboost_wserialization到聯結器標志中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/364333.html
