C ++代码::块-具有boost / archive的未定义引用,用于序列化

时间:2018-12-20 19:16:37

标签: c++ serialization boost codeblocks

我正在尝试对Code :: Blocks使用boost来序列化c ++中的对象。

我首先使用gcc 4.4.3构建了Boost,并遵循了link

中提供的说明

我还遵循了BoostWindowsQuickRef中提供的步骤,为编译器和链接器添加了全局变量和搜索目录选项,最后从链接器设置中的CodeBlocksProjects \ boost_1_69_0 \ stage \ lib添加了库。 / p>

我的第一个尝试是使用Lambda示例,并且编译成功:

#include <boost/lambda/lambda.hpp>
#include <vector>
#include <algorithm>
#include <iostream>

int main()
{
  std::vector<int> v{1, 3, 2};
  std::for_each(v.begin(), v.end(),
    std::cout << boost::lambda::_1 << "\n");
}

然后,当我尝试使用一个简单的序列化样本时,我不断收到“未定义引用”错误。

代码如下(摘自here

#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <iostream>
#include <fstream>

using namespace boost::archive;

void save()
{
  std::ofstream file{"archive.txt"};
  text_oarchive oa{file};
  int i = 1;
  oa << i;
}

void load()
{
  std::ifstream file{"archive.txt"};
  text_iarchive ia{file};
  int i = 0;
  ia >> i;
  std::cout << i << '\n';
}

int main()
{
  save();
  load();
}

,错误如下:

  

.. \ boost_1_69_0 \ boost \ archive \ text_oarchive.hpp | 104 |未定义   参考   `boost :: archive :: text_oarchive_impl :: text_oarchive_impl(std :: ostream&,   unsigned int)

     

.. \ boost_1_69_0 \ boost \ archive \ text_iarchive.hpp | 117 |未定义   参考   `boost :: archive :: text_iarchive_impl :: text_iarchive_impl(std :: istream&,   unsigned int)

我尝试将boost / archive添加到链接器搜索目录中,因为所有其他解决方案都表明这是链接问题。我还尝试了不同的示例代码,但是它们都给出了相同的错误。

有人在我使用Code :: Blocks构建和运行代码时只建议使用命令行来构建启动库吗?

该项目的当前搜索目录如下: search directories for the compiler search directories for the linker

链接器设置中添加的库: enter image description here

添加的全局变量: enter image description here

0 个答案:

没有答案