使用PST SDK编译错误
Compile errors using PST SDK
我正在将一个项目从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关注CopyAssignable
、CopyConstructible
、MoveAssignable
、MoveConstructible
所以它在Windows上工作的情况,而不是Linux:
请记住"Windows"answers"Linux"不是c++编译器。您需要对此进行扩展,并告诉我们您在每个操作系统上使用的是哪个版本的g++编译器。
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译