0

以下の問題について教えてください。私は成功せずに3日間試しました。

問題はシリアル化コードにあります。シリアル化をインスタンス化しようとするたびに、このエラーが発生します。

   Can't load '/home/scratch.bipham_ctg100/generic_dev/scripts/x86_64-linux/auto/nDB/nDB.so' for module nDB: /home/scratch.bipham_ctg100/generic_dev/scripts/x86_64-linux/auto/nDB/nDB.so: undefined symbol: _ZTIN5boost7archive17archive_exceptionE at ...

以下は私が書いたコードです

    //   nDB CONSTRUCTOR
    //**********************
    nDB::nDB() {
       //_LAYERS = new boost::unordered_map<string,layer,myhash,cmp_str>;
    }

    //   nDB DESTRUCTOR
    //**********************
    nDB::~nDB() {}

    //   nDB METHODS
    //**********************

    //===============================================================
    //  SERIALIZATION DEFINITION AND INITIALIZATION

    template<class Archive>
    void nDB::serialize(Archive &ar, const unsigned int version) {
       boost::unordered_map<string,macro*,myhash,cmp_str>::const_iterator _ITER;
       for (_ITER = _MACROS.begin();_ITER != _MACROS.end();_ITER++) {
          ar & _ITER->first;
          ar & *(_ITER->second);
       }
    }
    //template void nDB::serialize<boost::archive::binary_oarchive>(
    // boost::archive::binary_oarchive & ar,
    // const unsigned int version
    //);
    //template void nDB::serialize<boost::archive::binary_iarchive>(
    // boost::archive::binary_iarchive & ar,
    // const unsigned int version
    //);
    //================================================================

    void nDB::save_macros(string filename) {
       std::ofstream ofs(filename.c_str(), std::ios::out | std::ios::binary);
       boost::archive::binary_oarchive oa(ofs);
       oa << *this;
    }
4

1 に答える 1

0

ブースト シリアライゼーション ライブラリにリンクする必要があります。-lboost_serializationリンカー フラグに追加してみてください。

于 2012-03-30T03:26:16.007 に答える