【问题标题】:C++: Getting the "error C2065: 'pst' : undeclared identifier" while using pstsdk?C++:使用 pstsdk 时出现“错误 C2065:'pst':未声明的标识符”?
【发布时间】:2011-06-03 10:31:12
【问题描述】:

遵循在这个问题中使用 pstsdk 的建议:
Processing Microsoft Office Outlook 2003/2007 email messages…

并按照此处的说明进行操作:
PST File Format SDK - PST Layer Overview - Getting Started

还有根据这个视频:
In PST SDK Presentation, Terry Mahaffey, discusses the PST SDK file format SDK.
(转发到 28:32)

他们都同意我只需要在正确添加 Boostpstsdk 的包含路径后包含 PST 头文件,并将以下代码写入开始使用我的 pst 文件:

#include "pst.h"

pst myfile(L"myfile.pst");

现在,我混合使用托管和非托管 C++,因此我尝试将此代码放入我的函数中,如下所示:

private: 
    System::Void readPstFileButton_Click(System::Object^  sender, System::EventArgs^  e) {
        pst myfile(fileNameTextBox->Text);
    }

每次编译时,我都会收到 c2065 错误代码,指出 pst 未声明。

有什么线索吗?

编辑#1

按照 Hans Passant 的建议完成后(可行),我的代码现在如下所示:

private:
    System::Void readPstFileButton_Click(System::Object^  sender, System::EventArgs^  e) {
         pstsdk::pst myfile(marshal_as<std::wstring>(fileNameTextBox->Text));
    }

我现在收到以下错误:

错误 C3859:超出 PCH 的虚拟内存范围;请使用 '-Zm111' 或更高的命令行选项重新编译

错误 C1076:编译器限制:达到内部堆限制;使用 /Zm 指定更高的限制

我绝对没想到会发生这些。如何解决?

【问题讨论】:

    标签: c++ visual-studio-2010 unmanaged managed-c++ pst


    【解决方案1】:

    它应该在命名空间中声明。修复:

     pstsdk::pst myfile(fileNameTextBox->Text);
    

    【讨论】:

    • 是的,我发现有类型不匹配或类似的东西:error C2664: 'pstsdk::pst::pst(const std::wstring &amp;)' : cannot convert parameter 1 from 'System::String ^' to 'const std::wstring &amp;'。我知道这是混合托管和非托管 C++ 的事实,但无论如何我似乎都无法进行类型转换。
    • 好吧,我在上一篇文章中警告过你,C++/CLI 不是 C++。您需要将 String^ 转换为 wstring。 msdn.microsoft.com/nl-be/library/bb384865%28en-us%29.aspx
    • 呵呵呵呵...是的,你做到了!我很高兴你做到了。现在,我希望在 C++/CLI 和 C++ 方面变得比在 C# 方面更流利,或者至少接近。这就是为什么我给自己这个艰苦的“功课”,以艰苦的方式学习。在我看来,处理一个真正的问题,我会更有效地学习。感谢您的链接! =)
    • 你必须开始一个新问题。
    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2011-04-16
    • 2011-04-16
    • 2010-12-24
    • 2023-03-04
    • 2011-03-02
    • 2011-12-22
    相关资源
    最近更新 更多