2011-01-04 2 views
0

Suite à la suggestion de travailler avec le pstsdk dans cette question:
Processing Microsoft Office Outlook 2003/2007 email messages…C++: obtention de l'erreur "C2065: 'pst': identificateur non déclaré" lors de l'utilisation de pstsdk?

et en suivant les instructions ici:
PST File Format SDK - PST Layer Overview - Getting Started

Et selon cette vidéo:
In PST SDK Presentation, Terry Mahaffey, discusses the PST SDK file format SDK.
(Forward à 28:32)

Ils sont tous d'accord que je ne fais que doivent inclure le fichier d'en-tête PST après avoir correctement ajouté les chemins d'à la fois Boost et pstsdk, et d'écrire le code suivant pour commencer à travailler avec mon fichier pst:

#include "pst.h" 

pst myfile(L"myfile.pst"); 

Maintenant, je suis en utilisant un mélange de gestion et non géré C++, donc je suis en train de mettre ce code dans ma fonction comme ceci:

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

et chaque fois que je compile, je reçois le code d'erreur C2065 qui dit le pst est non déclaré.

Quelque chose?

EDIT # 1

Après que je l'ai fait comme suggéré par Hans Passant (qui fonctionne), mon code ressemble maintenant à ceci:

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

Et je reçois maintenant les erreurs suivantes:

erreur C3859: gamme de mémoire virtuelle pour PCH dépassée; recompiler avec une option de ligne de commande de '-Zm111' ou plus

erreur C1076: limite du compilateur: limite de tas interne atteinte; utiliser/Zm pour spécifier une limite supérieure

Je ne m'attendais absolument pas à ce que cela se produise. Comment les résoudre?

Répondre

2

Il est déclaré dans un espace de noms, comme il se doit. Correction:

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

Oui, et je comprendre d'avoir une incompatibilité de type ou quelque chose comme ceci: 'erreur C2664: 'pstsdk :: :: pst pst (const std :: wstring &)': ne peut pas convertir le paramètre 1 de 'System :: String ^' à 'const std :: wstring &' '. Je comprends que c'est un fait de mélanger le C++ géré et non managé, mais je ne semble pas pouvoir taper cast de toute façon. –

+1

Eh bien, je vous ai prévenu à ce sujet dans votre message précédent, C++/CLI n'est pas C++. Vous devez convertir la chaîne^en wstring. http://msdn.microsoft.com/nl-be/library/bb384865%28en-us%29.aspx –

+0

Hehehe ... Oui, vous l'avez fait! Et je suis content que tu l'aies fait. Maintenant, je souhaite devenir aussi compétent en C++/CLI et C++ qu'en C#, ou proche de, au moins. C'est pourquoi je me donne ce dur "devoir", pour apprendre à la dure. Travailler avec un vrai problème, je vais apprendre plus efficacement, à mon avis. Merci pour le lien! =) –

Questions connexes