2009-10-28 3 views
0

J'avais un code de déchiffrement (en utilisant wincrypt.h) qui vivait dans ma classe FileReader.cpp. J'essaie de séparer le code et de pousser cette méthode de décryptage dans une classe MyCrypt.cpp. Cependant, en le déplaçant je suis coincé avec un tas d'erreurs que je n'étais pas confronté avant. Pour chaque commande spécifique wincrypt.h ou windows.h, je reçois "identificateur non trouvé" ou "identificateur non déclaré".Problèmes lors du déplacement du code d'une classe dans une nouvelle classe?

Ce qui donne!

Plus de détails ..

erreurs Exemples:

erreur C2065: 'HCRYPTPROV': identificateur noir

erreur C3861: 'CryptDecrypt': identifiant pas trouvé

J'inclus windows.h et wincrypt.h, tout comme dans FileReader.cpp.

#include "MyCrypt.h" 
#include <windows.h> 
#include <wincrypt.h> 

MyCrypt.h est défini comme:

#pragma once 

class MyCrypt 
{ 
public: 
    static char *DecryptMyFile(char *input, char *password, int size, int originalSize) ; 

private: 
    static const DWORD KEY_LENGTH = 128; 
} 

Si je réarrange mes inclure des fichiers, je reçois les erreurs suivantes: au lieu

erreur C2628: 'MyCrypt' suivi par 'char' est illégal (avez-vous oublié un ';'?) erreur C2556: 'MyCrypt * MyCrypt :: DecryptMyFile (char *, char *, int, int)': la fonction surchargée ne diffère que par le type de retour de ' carboniser * MyCrypt :: DecryptMyFile (char *, char *, int, int)

Mais nulle part dans mon code n'utilise cette redéfinition, il parle de ..

+0

#include problème? – JRL

+1

pouvez-vous poster plus de détails? Comme, disons, la ligne sur laquelle elle se trompe et l'erreur complète que vous obtenez? – Herms

+0

Est-ce que MyCrypt.cpp #include wincrypt.h et windows.h de la même manière que FileReader.cpp? –

Répondre

2

Vérifiez MyCrypt.h et assurez-vous qu'il existe un ; après l'accolade de fermeture. J'ai vu des messages d'erreur assez étranges quand j'ai raté ça. Il manque dans l'échantillon que vous avez posté.

+0

... Assez malheureux. – Mark

+0

Cela m'a mordu quelques fois aussi, surtout quand je retourne en C++ après avoir utilisé d'autres langages pendant un moment. C'est l'une des premières choses que je vérifie maintenant. :) – Herms

1

Sons comme le code que vous quittiez de FileReader.cpp référençait soit les variables membres de cette classe qui n'existent pas dans MyCrypt.cpp, soit les méthodes incluses dans # FileReader.cpp qui n'étaient pas incluses dans MyCrypt.cpp.

+0

C'était ma première impression mais cela ne semble pas être le cas. J'ai mis à jour ma description avec quelques détails supplémentaires. – Mark

0

Il semble que vous ayez manqué certains #includes dans le nouveau fichier MyCrypt.cpp, comme windows.h et wincrypt.h, mais nous avons besoin d'erreurs spécifiques pour vous aider.

+0

Je pensais cela aussi, mais je ne le crois pas en faisant un double contrôle. J'ai ajouté plus de détails à ma description – Mark

0

Quelques idées: (car ils étaient dans l'ancienne classe et maintenant déplacé, peut-être vous avez oublié de les appeler par un pointeur dans la nouvelle classe)

  • vous appellent des méthodes sans faire référence à l'objet premier
  • vous pourriez essayer de changer l'ordre des instructions include.
  • utilisez-vous des en-têtes précompilés? Vous pourriez essayer sans voir si cela résout le problème.
+0

En parcourant et essayant ceux-ci ... En enlevant ma référence en-tête précompilée donne une erreur de compilateur. "fin de fichier inattendue lors de la recherche de l'en-tête précompilé" – Mark

+0

Ajout des résultats de la réorganisation de mes instructions include à la description – Mark

2

Avez-vous oublié le point-virgule après votre déclaration de classe?

Questions connexes