使用PST SDK编译错误

时间:2014-05-16 01:02:36

标签: c++ linux g++

我正在将一个项目从Windows移植到Linux / Ubuntu,其中涉及使用名为“PST SDK”的开放软件 (http://pstsdk.codeplex.com)用c ++编写。这自2010年以来一直没有更新,但它运作良好 Windows并且据说可以在Linux中工作/工作。我设置了一个只包含的演示程序 头文件(库是所有标题,没有链接)。我有很多错误,但得到了它们 通过使用g ++而不是gcc来修复,并摆弄库文件的位置和所需 提升文件。

然而,一旦我尝试打电话,我遇到了问题。我有一些工作,但是 以下代码:

std::vector<pstsdk::folder> folderlist;
folderlist.push_back(folder);

导致此编译错误:

  

错误:'pstsdk :: property_bag&amp; pstsdk :: property_bag :: operator =(const pstsdk :: property_bag&amp;)'是私有的

(关于从什么文件中实例化的内容还有很多其他的证据)。这是编译命令:

g++ -c -I/usr/local/include -Iboost_1_46_1 -Ipstsdk -I/usr/local/include/mysql ostdemo.cpp

特别是导致错误的push_back调用 - 将其取出并消失。当然 这对我的计划的工作至关重要。知道这可能是什么?我认为它有 与我的编译器版本或开关有关,但我无法弄清楚。我并不多 一个c ++程序员,所以任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的vector::push_back()要求类型为copy-assignable。显然,由于赋值运算符为pstsdk::folder,因此private不可复制。

要放置在矢量中的类型有哪些要求?这取决于您使用的是预C ++ 11还是C ++ 11,以及您计划对这些类型执行的操作。见这里:

http://en.cppreference.com/w/cpp/container/vector

关注CopyAssignableCopyConstructibleMoveAssignableMoveConstructible

所以它适用于Windows而不是Linux:

请记住,“Windows”和“Linux”不是C ++编译器。您需要对此进行扩展,并告诉我们您在每个操作系统上使用的g ++编译器的版本。