使用PST SDK编译错误

Compile errors using PST SDK

本文关键字:错误 编译 SDK PST 使用      更新时间:2023-10-16

我正在将一个项目从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&Pstsdk::property_bag::operator=(const Pstsdk::property_bag&)' is private

(关于从哪个文件实例化了什么,还有很多其他的验证)。下面是编译命令:

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

具体来说,是push_back调用导致了错误——去掉它,错误就消失了。当然这对我的项目的运作至关重要。知道这是什么吗?我想是的与我的编译器版本或开关有关,但我不能弄清楚。我不太c++程序员,如有任何帮助将不胜感激。

您的vector::push_back()要求类型为copy-assignable。显然,由于赋值操作符是private,所以pstsdk::folder不能进行复制赋值。

将类型放入vector中有什么要求?这取决于您使用的是c++ 11之前版本还是c++ 11,以及您计划在这些类型上执行的操作。在这里看到的:

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

关注CopyAssignableCopyConstructibleMoveAssignableMoveConstructible

所以它在Windows上工作的情况,而不是Linux:

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