c++ - boost::archive 和序列化的链接器错误

标签 c++ serialization boost mfc linker

我是 VC++ 12.0 和 MFC 以及 boost 库的新手。但是,我需要使用 boost 库来序列化存储自定义数据类型的 vector 。我阅读了 DEMO_GPS 的示例并在我的问题中使用了类似的代码。不幸的是,我遇到了以下链接器错误:

1>SMTDoc.obj : error LNK2019: unresolved external symbol "public: __cdecl boost::archive::archive_exception::archive_exception(enum boost::archive::archive_exception::_exception_code,char const *,char const *)" (??0archive_exception@archive@boost@@QEAA@W4_exception_code@012@PEBD1@Z) referenced in function "protected: void __cdecl boost::archive::basic_text_oprimitive<class std::basic_ostream<char,struct std::char_traits<char> > >::save_impl<double>(double const &,struct boost::mpl::bool_<1> &)" (??$save_impl@N@?$basic_text_oprimitive@V?$basic_ostream@DU?$char_traits@D@std@@@std@@@archive@boost@@IEAAXAEBNAEAU?$bool_@$00@mpl@2@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl boost::archive::archive_exception::~archive_exception(void)" (??1archive_exception@archive@boost@@UEAA@XZ) referenced in function "public: void __cdecl boost::archive::archive_exception::`vbase destructor'(void)" (??_Darchive_exception@archive@boost@@QEAAXXZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "public: virtual char const * __cdecl boost::archive::archive_exception::what(void)const " (?what@archive_exception@archive@boost@@UEBAPEBDXZ) referenced in function "[thunk]:public: virtual char const * __cdecl boost::archive::archive_exception::what`vtordisp{4294967292,0}' (void)const " (?what@archive_exception@archive@boost@@$4PPPPPPPM@A@EBAPEBDXZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::serialization::extended_type_info::key_unregister(void)const " (?key_unregister@extended_type_info@serialization@boost@@IEBAXXZ) referenced in function "public: __cdecl boost::serialization::extended_type_info_typeid<class CDPoint>::~extended_type_info_typeid<class CDPoint>(void)" (??1?$extended_type_info_typeid@VCDPoint@@@serialization@boost@@QEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::serialization::extended_type_info::key_register(void)const " (?key_register@extended_type_info@serialization@boost@@IEBAXXZ) referenced in function "public: __cdecl boost::serialization::extended_type_info_typeid<class CDPoint>::extended_type_info_typeid<class CDPoint>(void)" (??0?$extended_type_info_typeid@VCDPoint@@@serialization@boost@@QEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::serialization::typeid_system::extended_type_info_typeid_0::extended_type_info_typeid_0(char const *)" (??0extended_type_info_typeid_0@typeid_system@serialization@boost@@IEAA@PEBD@Z) referenced in function "public: __cdecl boost::serialization::extended_type_info_typeid<class CDPoint>::extended_type_info_typeid<class CDPoint>(void)" (??0?$extended_type_info_typeid@VCDPoint@@@serialization@boost@@QEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0(void)" (??1extended_type_info_typeid_0@typeid_system@serialization@boost@@IEAA@XZ) referenced in function "int `public: __cdecl boost::serialization::extended_type_info_typeid<class CDPoint>::extended_type_info_typeid<class CDPoint>(void)'::`1'::dtor$0" (?dtor$0@?0???0?$extended_type_info_typeid@VCDPoint@@@serialization@boost@@QEAA@XZ@4HA)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::serialization::typeid_system::extended_type_info_typeid_0::type_register(class type_info const &)" (?type_register@extended_type_info_typeid_0@typeid_system@serialization@boost@@IEAAXAEBVtype_info@@@Z) referenced in function "public: __cdecl boost::serialization::extended_type_info_typeid<class CDPoint>::extended_type_info_typeid<class CDPoint>(void)" (??0?$extended_type_info_typeid@VCDPoint@@@serialization@boost@@QEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister(void)" (?type_unregister@extended_type_info_typeid_0@typeid_system@serialization@boost@@IEAAXXZ) referenced in function "public: __cdecl boost::serialization::extended_type_info_typeid<class CDPoint>::~extended_type_info_typeid<class CDPoint>(void)" (??1?$extended_type_info_typeid@VCDPoint@@@serialization@boost@@QEAA@XZ)
1>SMTDoc.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl boost::serialization::typeid_system::extended_type_info_typeid_0::is_less_than(class boost::serialization::extended_type_info const &)const " (?is_less_than@extended_type_info_typeid_0@typeid_system@serialization@boost@@UEBA_NAEBVextended_type_info@34@@Z)
1>SMTDoc.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl boost::serialization::typeid_system::extended_type_info_typeid_0::is_equal(class boost::serialization::extended_type_info const &)const " (?is_equal@extended_type_info_typeid_0@typeid_system@serialization@boost@@UEBA_NAEBVextended_type_info@34@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "public: void __cdecl boost::archive::detail::basic_oarchive::save_object(void const *,class boost::archive::detail::basic_oserializer const &)" (?save_object@basic_oarchive@detail@archive@boost@@QEAAXPEBXAEBVbasic_oserializer@234@@Z) referenced in function "public: static void __cdecl boost::archive::detail::save_non_pointer_type<class boost::archive::xml_oarchive>::save_standard::invoke<class CDPoint>(class boost::archive::xml_oarchive &,class CDPoint const &)" (??$invoke@VCDPoint@@@save_standard@?$save_non_pointer_type@Vxml_oarchive@archive@boost@@@detail@archive@boost@@SAXAEAVxml_oarchive@34@AEBVCDPoint@@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::archive::detail::basic_oserializer::basic_oserializer(class boost::serialization::extended_type_info const &)" (??0basic_oserializer@detail@archive@boost@@IEAA@AEBVextended_type_info@serialization@3@@Z) referenced in function "public: __cdecl boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class CDPoint>::oserializer<class boost::archive::xml_oarchive,class CDPoint>(void)" (??0?$oserializer@Vxml_oarchive@archive@boost@@VCDPoint@@@detail@archive@boost@@QEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::archive::detail::basic_oserializer::~basic_oserializer(void)" (??1basic_oserializer@detail@archive@boost@@IEAA@XZ) referenced in function "public: virtual __cdecl boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class CDPoint>::~oserializer<class boost::archive::xml_oarchive,class CDPoint>(void)" (??1?$oserializer@Vxml_oarchive@archive@boost@@VCDPoint@@@detail@archive@boost@@UEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::archive::basic_text_oprimitive<class std::basic_ostream<char,struct std::char_traits<char> > >::~basic_text_oprimitive<class std::basic_ostream<char,struct std::char_traits<char> > >(void)" (??1?$basic_text_oprimitive@V?$basic_ostream@DU?$char_traits@D@std@@@std@@@archive@boost@@IEAA@XZ) referenced in function "protected: __cdecl boost::archive::xml_oarchive_impl<class boost::archive::xml_oarchive>::~xml_oarchive_impl<class boost::archive::xml_oarchive>(void)" (??1?$xml_oarchive_impl@Vxml_oarchive@archive@boost@@@archive@boost@@IEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_start(char const *)" (?save_start@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXPEBD@Z) referenced in function "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override<double>(struct boost::serialization::nvp<double> const &,int)" (??$save_override@N@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBU?$nvp@N@serialization@2@H@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_end(char const *)" (?save_end@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXPEBD@Z) referenced in function "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override<double>(struct boost::serialization::nvp<double> const &,int)" (??$save_override@N@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBU?$nvp@N@serialization@2@H@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::end_preamble(void)" (?end_preamble@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXXZ) referenced in function "public: static void __cdecl boost::archive::save_access::save_primitive<class boost::archive::xml_oarchive,double>(class boost::archive::xml_oarchive &,double const &)" (??$save_primitive@Vxml_oarchive@archive@boost@@N@save_access@archive@boost@@SAXAEAVxml_oarchive@12@AEBN@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override(class boost::archive::object_id_type const &,int)" (?save_override@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBVobject_id_type@23@H@Z) referenced in function "public: class boost::archive::xml_oarchive & __cdecl boost::archive::detail::interface_oarchive<class boost::archive::xml_oarchive>::operator<<<class boost::archive::object_id_type const >(class boost::archive::object_id_type const &)" (??$?6$$CBVobject_id_type@archive@boost@@@?$interface_oarchive@Vxml_oarchive@archive@boost@@@detail@archive@boost@@QEAAAEAVxml_oarchive@23@AEBVobject_id_type@23@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override(class boost::archive::object_reference_type const &,int)" (?save_override@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBVobject_reference_type@23@H@Z) referenced in function "public: class boost::archive::xml_oarchive & __cdecl boost::archive::detail::interface_oarchive<class boost::archive::xml_oarchive>::operator<<<class boost::archive::object_reference_type const >(class boost::archive::object_reference_type const &)" (??$?6$$CBVobject_reference_type@archive@boost@@@?$interface_oarchive@Vxml_oarchive@archive@boost@@@detail@archive@boost@@QEAAAEAVxml_oarchive@23@AEBVobject_reference_type@23@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override(class boost::archive::version_type const &,int)" (?save_override@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBVversion_type@23@H@Z) referenced in function "public: class boost::archive::xml_oarchive & __cdecl boost::archive::detail::interface_oarchive<class boost::archive::xml_oarchive>::operator<<<class boost::archive::version_type const >(class boost::archive::version_type const &)" (??$?6$$CBVversion_type@archive@boost@@@?$interface_oarchive@Vxml_oarchive@archive@boost@@@detail@archive@boost@@QEAAAEAVxml_oarchive@23@AEBVversion_type@23@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override(class boost::archive::class_id_type const &,int)" (?save_override@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBVclass_id_type@23@H@Z) referenced in function "public: class boost::archive::xml_oarchive & __cdecl boost::archive::detail::interface_oarchive<class boost::archive::xml_oarchive>::operator<<<class boost::archive::class_id_type const >(class boost::archive::class_id_type const &)" (??$?6$$CBVclass_id_type@archive@boost@@@?$interface_oarchive@Vxml_oarchive@archive@boost@@@detail@archive@boost@@QEAAAEAVxml_oarchive@23@AEBVclass_id_type@23@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override(class boost::archive::class_id_optional_type const &,int)" (?save_override@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBVclass_id_optional_type@23@H@Z) referenced in function "public: class boost::archive::xml_oarchive & __cdecl boost::archive::detail::interface_oarchive<class boost::archive::xml_oarchive>::operator<<<class boost::archive::class_id_optional_type const >(class boost::archive::class_id_optional_type const &)" (??$?6$$CBVclass_id_optional_type@archive@boost@@@?$interface_oarchive@Vxml_oarchive@archive@boost@@@detail@archive@boost@@QEAAAEAVxml_oarchive@23@AEBVclass_id_optional_type@23@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override(class boost::archive::class_id_reference_type const &,int)" (?save_override@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBVclass_id_reference_type@23@H@Z) referenced in function "public: class boost::archive::xml_oarchive & __cdecl boost::archive::detail::interface_oarchive<class boost::archive::xml_oarchive>::operator<<<class boost::archive::class_id_reference_type const >(class boost::archive::class_id_reference_type const &)" (??$?6$$CBVclass_id_reference_type@archive@boost@@@?$interface_oarchive@Vxml_oarchive@archive@boost@@@detail@archive@boost@@QEAAAEAVxml_oarchive@23@AEBVclass_id_reference_type@23@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override(struct boost::archive::class_name_type const &,int)" (?save_override@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBUclass_name_type@23@H@Z) referenced in function "public: class boost::archive::xml_oarchive & __cdecl boost::archive::detail::interface_oarchive<class boost::archive::xml_oarchive>::operator<<<struct boost::archive::class_name_type const >(struct boost::archive::class_name_type const &)" (??$?6$$CBUclass_name_type@archive@boost@@@?$interface_oarchive@Vxml_oarchive@archive@boost@@@detail@archive@boost@@QEAAAEAVxml_oarchive@23@AEBUclass_name_type@23@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::save_override(struct boost::archive::tracking_type const &,int)" (?save_override@?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAAXAEBUtracking_type@23@H@Z) referenced in function "public: class boost::archive::xml_oarchive & __cdecl boost::archive::detail::interface_oarchive<class boost::archive::xml_oarchive>::operator<<<struct boost::archive::tracking_type const >(struct boost::archive::tracking_type const &)" (??$?6$$CBUtracking_type@archive@boost@@@?$interface_oarchive@Vxml_oarchive@archive@boost@@@detail@archive@boost@@QEAAAEAVxml_oarchive@23@AEBUtracking_type@23@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::archive::basic_xml_oarchive<class boost::archive::xml_oarchive>::~basic_xml_oarchive<class boost::archive::xml_oarchive>(void)" (??1?$basic_xml_oarchive@Vxml_oarchive@archive@boost@@@archive@boost@@IEAA@XZ) referenced in function "protected: __cdecl boost::archive::xml_oarchive_impl<class boost::archive::xml_oarchive>::~xml_oarchive_impl<class boost::archive::xml_oarchive>(void)" (??1?$xml_oarchive_impl@Vxml_oarchive@archive@boost@@@archive@boost@@IEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::archive::xml_oarchive_impl<class boost::archive::xml_oarchive>::xml_oarchive_impl<class boost::archive::xml_oarchive>(class std::basic_ostream<char,struct std::char_traits<char> > &,unsigned int)" (??0?$xml_oarchive_impl@Vxml_oarchive@archive@boost@@@archive@boost@@IEAA@AEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@I@Z) referenced in function "public: __cdecl boost::archive::xml_oarchive::xml_oarchive(class std::basic_ostream<char,struct std::char_traits<char> > &,unsigned int)" (??0xml_oarchive@archive@boost@@QEAA@AEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@I@Z)

有的回答说这种错误是因为boost库和工程不匹配,32bit Vs 64bit。然而,我也在 x64 平台上尝试了 DEMO_GPS 代码,但没有链接器错误。

这是我保存文档的代码:

BOOL CSMTDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
    // TODO: Add your specialized code here and/or call the base class

    if (!CDocument::OnSaveDocument(lpszPathName))
    return FALSE;

    char* pBuffer;

    USES_CONVERSION;
    pBuffer = T2A(lpszPathName);

    std::ofstream ofs(pBuffer);
    assert(ofs.good());
    boost::archive::xml_oarchive oa(ofs);
    oa << BOOST_SERIALIZATION_NVP(minPoint);

    return CDocument::OnSaveDocument(lpszPathName);
}

还有特别针对 boost 序列化包含的内容:

#include <iomanip>
#include <iostream>
#include <fstream>  
#include <cstdio> 
#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
    using ::remove;
}
#endif
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>

我还尝试了一个简单版本的boost序列化,就像教程中最简单的那样。但是,似乎每次我取消注释这一行时:

boost::archive::text_oarchive oa(ofs);

在OnSaveDocument(LPCTSTR lpszPathName)中,会出现一些链接器错误:

1>SMTDoc.obj : error LNK2019: unresolved external symbol "public: __cdecl boost::archive::archive_exception::archive_exception(enum boost::archive::archive_exception::_exception_code,char const *,char const *)" (??0archive_exception@archive@boost@@QEAA@W4_exception_code@012@PEBD1@Z) referenced in function "protected: void __cdecl boost::archive::basic_text_oprimitive<class std::basic_ostream<char,struct std::char_traits<char> > >::save_impl<unsigned int>(unsigned int const &,struct boost::mpl::bool_<0> &)" (??$save_impl@I@?$basic_text_oprimitive@V?$basic_ostream@DU?$char_traits@D@std@@@std@@@archive@boost@@IEAAXAEBIAEAU?$bool_@$0A@@mpl@2@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl boost::archive::archive_exception::~archive_exception(void)" (??1archive_exception@archive@boost@@UEAA@XZ) referenced in function "public: void __cdecl boost::archive::archive_exception::`vbase destructor'(void)" (??_Darchive_exception@archive@boost@@QEAAXXZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "public: virtual char const * __cdecl boost::archive::archive_exception::what(void)const " (?what@archive_exception@archive@boost@@UEBAPEBDXZ) referenced in function "[thunk]:public: virtual char const * __cdecl boost::archive::archive_exception::what`vtordisp{4294967292,0}' (void)const " (?what@archive_exception@archive@boost@@$4PPPPPPPM@A@EBAPEBDXZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::archive::detail::basic_oarchive::~basic_oarchive(void)" (??1basic_oarchive@detail@archive@boost@@IEAA@XZ) referenced in function "public: __cdecl boost::archive::detail::common_oarchive<class boost::archive::text_oarchive>::~common_oarchive<class boost::archive::text_oarchive>(void)" (??1?$common_oarchive@Vtext_oarchive@archive@boost@@@detail@archive@boost@@QEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "public: void __cdecl boost::archive::detail::basic_oarchive::end_preamble(void)" (?end_preamble@basic_oarchive@detail@archive@boost@@QEAAXXZ) referenced in function "public: static void __cdecl boost::archive::save_access::save_primitive<class boost::archive::text_oarchive,struct boost::archive::tracking_type>(class boost::archive::text_oarchive &,struct boost::archive::tracking_type const &)" (??$save_primitive@Vtext_oarchive@archive@boost@@Utracking_type@23@@save_access@archive@boost@@SAXAEAVtext_oarchive@12@AEBUtracking_type@12@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::archive::basic_text_oprimitive<class std::basic_ostream<char,struct std::char_traits<char> > >::~basic_text_oprimitive<class std::basic_ostream<char,struct std::char_traits<char> > >(void)" (??1?$basic_text_oprimitive@V?$basic_ostream@DU?$char_traits@D@std@@@std@@@archive@boost@@IEAA@XZ) referenced in function "protected: __cdecl boost::archive::text_oarchive_impl<class boost::archive::text_oarchive>::~text_oarchive_impl<class boost::archive::text_oarchive>(void)" (??1?$text_oarchive_impl@Vtext_oarchive@archive@boost@@@archive@boost@@IEAA@XZ)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::basic_text_oarchive<class boost::archive::text_oarchive>::newtoken(void)" (?newtoken@?$basic_text_oarchive@Vtext_oarchive@archive@boost@@@archive@boost@@IEAAXXZ) referenced in function "protected: void __cdecl boost::archive::text_oarchive_impl<class boost::archive::text_oarchive>::save<unsigned int>(unsigned int const &)" (??$save@I@?$text_oarchive_impl@Vtext_oarchive@archive@boost@@@archive@boost@@IEAAXAEBI@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: void __cdecl boost::archive::text_oarchive_impl<class boost::archive::text_oarchive>::save(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?save@?$text_oarchive_impl@Vtext_oarchive@archive@boost@@@archive@boost@@IEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "public: static void __cdecl boost::archive::save_access::save_primitive<class boost::archive::text_oarchive,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >(class boost::archive::text_oarchive &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??$save_primitive@Vtext_oarchive@archive@boost@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@save_access@archive@boost@@SAXAEAVtext_oarchive@12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>SMTDoc.obj : error LNK2019: unresolved external symbol "protected: __cdecl boost::archive::text_oarchive_impl<class boost::archive::text_oarchive>::text_oarchive_impl<class boost::archive::text_oarchive>(class std::basic_ostream<char,struct std::char_traits<char> > &,unsigned int)" (??0?$text_oarchive_impl@Vtext_oarchive@archive@boost@@@archive@boost@@IEAA@AEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@I@Z) referenced in function "public: __cdecl boost::archive::text_oarchive::text_oarchive(class std::basic_ostream<char,struct std::char_traits<char> > &,unsigned int)" (??0text_oarchive@archive@boost@@QEAA@AEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@I@Z)

最佳答案

我在 64 位计算机上遇到类似的链接问题。基于this answer .我重建了 boost 库,它解决了问题。 尝试

 b2 --toolset=msvc-12.0 --build-type=complete architecture=x86 address-model=64 stage

关于c++ - boost::archive 和序列化的链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197408/

相关文章:

c++ - 标准 :any throwing exception resolving function type

从 txt 文件读取时,C++ 重载流 I/O 运算符

c++ - 对象的二维几何布局

python - 在将字符串用作 json 对象之前转义字符串的正确方法是什么

c++ - 为什么 C++ Boost 发行版有 `.dll` 和 `.lib` 文件?

c++ - boost asio async_read_until : how to raise error from a custom MatchCondition?

c++ - 自动完成功能无法在git存储库中的Visual Studio项目中工作

java - Wicket:我可以安全地忽略可序列化的警告吗?

c# - jquery 的 ASP.NET MVC Form 和 serializeArray() 用 false 覆盖复选框的状态

c++ - boost::interprocess 映射线程安全