2017-05-13 15 views
0

シリアライズのシーケンスを実行しています。ブーストバイナリファイルの読み込みエラーがサポートされていないバージョン

は、Windowsシステムでは、私は問題がないようです

ブーストによるバイナリファイル::シリアル化を行いました。

しかし、私はこのバイナリファイルをlinuxシステムに移動し、バイナリファイルをロードすると コンパイラはサポートされていないバージョンを示しています。

私はこの問題について考えていません。

誰でもお手伝いできますか?

WindowsとLinuxのBoostバージョンは同じです。ブーストバージョンは1_63_0です。

Adjcency_grpah LoadGraphData(char *fileName) { 
    Adjcency_grpah g; 
    std::ifstream ifs(fileName, std::ios::binary); 
    if (!ifs) { 
     cout << "Read Error" << endl; 
     exit(1); 
    } 
    try { 
     boost::archive::binary_iarchive ia(ifs); 
     ia & BOOST_SERIALIZATION_NVP(g); 
     cout << "Restoring Graphs Serialize Success\n" << endl; 
    } 
    catch (boost::archive::archive_exception e) { 
     cout << "BOOST ERROR " << e.what() << std::endl; 
    } 
    return g; 
} 

それはまだ "BOOSTのERRORサポートされていないバージョン 時間:0" と言い

+1

実際のSSCCEを投稿できる場合は、エラーがないかどうか確認することができます。 – sehe

+0

バイナリファイルを生成する多くのコンポーネントがあります。だから、私はそれを投稿したいが、それはサンプルコードを作るのは難しい... – Seungsoo

+0

SaveGraphDataコードを介して、Windowsでバイナリファイルを生成します。私はそれをsftpでLinuxサーバに移します。 Linuxシステムでは、前に述べたコードを実行します。コンパイラはサポートされていないバージョンを言います。 – Seungsoo

答えて

1

ブーストの組み込みバイナリアーカイブがないポータブルです。これはドキュメントにも書かれています。

代わりにEOS Portable Archiveを使用することができます。 Boost Serializationと完全に互換性があります。

このほかにも、プラットフォームに依存しないタイプの識別子(longの代わりにint64_tなど)を必ず使用してください。

+0

EOSポータブルアーカイブはC++のライブラリですか? – Seungsoo

+1

リンクで実際に見ることができます。 Webページにアクセスしたくない場合は、安全なブラウザを使用してください。それはC + +の場合は、 "ブーストのシリアライゼーションと完全にドロップイン互換"することはできませんか? – sehe

+0

ああ!うん、私はそれを理解し、私はEOSのアーカイブを調整している! ウェブサイトからzipファイルをダウンロードしていますが、zipフォルダに "portable_binary_iarchive.hpp"ファイルがありません。名前は "portable_iarchive.hpp"に変更されましたか? – Seungsoo

関連する問題