2009-10-28 19 views
0

我有一些解密代码(使用wincrypt.h)住在我的FileReader.cpp类。我试图隔离代码并将此解密方法推送到MyCrypt.cpp类中。但是,移动它后,我陷入了一堆我以前没有面对的错误。对于每个wincrypt.hwindows.h特定命令,我收到“标识符未找到”或“未声明的标识符”。将代码从一个类移动到一个新类时的问题?

什么给!

更多细节..

样本错误:

错误C2065:HCRYPTPROV:未声明 标识

错误C3861: 'CryptDecrypt': 标识符没有找到

我包括windows.h和wincrypt.h,就像我在FileReader.cpp中一样。

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

MyCrypt.h被定义为:

#pragma once 

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

private: 
    static const DWORD KEY_LENGTH = 128; 
} 

如果我重新安排我的头文件,我得到了下面的错误,而不是:

错误C2628: '的mycrypt' 后跟 'char'是非法的(你忘了 ';'?)错误C2556:'MyCrypt * MyCrypt :: DecryptMyFile(char *,char *,int,int)':重载函数只有返回类型与'炭 *的mycrypt :: DecryptMyFile(字符*,字符*,INT,INT)

但无处在我的代码不会使用这个重新定义它讲的..

+0

#包括问题? – JRL 2009-10-28 15:56:56

+1

你能发布更多信息吗?比如说,它出错的路线和你得到的全部错误? – Herms 2009-10-28 15:56:56

+0

MyCrypt.cpp包含wincrypt.h和windows.h的方式与FileReader.cpp相同吗? – 2009-10-28 15:58:03

回答

2

检查MyCrypt.h并确保在大括号后有;。我错过了一些相当奇怪的错误消息。它在您发布的示例中缺失。

+0

的结果......非常不幸。 – Mark 2009-10-28 16:45:57

+0

这也让我感到困惑了很多,特别是当我在使用其他语言一段时间后回到C++时。这是我现在检查的第一件事情之一。 :) – Herms 2009-10-28 20:48:03

1

听起来像是你搬出码FileReader.cpp的引用是引用MyCrypt.cpp中不存在的那个类的成员变量,或者引用FileReader.cpp中未包含在MyCrypt.cpp中的方法。

+0

这是我的第一印象,但似乎并非如此。我已经用更多的细节更新了我的描述。 – Mark 2009-10-28 16:03:02

0

听起来像你现在在新的MyCrypt.cpp文件中缺少一些#include,例如windows.h和wincrypt.h,但是我们需要实际的错误来帮助你。

+0

我也这么认为,但我不这么认为,而双重检查。我在我的描述中添加了更多详细信息 – Mark 2009-10-28 16:03:38

0

一些想法:(?因为他们是在老班现在感动,也许你忘了通过新类的指针调用它们)

  • 你打不首先引用对象的方法
  • 您可以尝试移动包含语句的顺序。
  • 你使用预编译头文件吗?你可以尝试一下,看看是否能解决问题。
+0

阅读并尝试这些...删除我的预编译头引用会产生编译器错误。 “寻找预编译头文件时意外结束的文件” – Mark 2009-10-28 16:20:37

+0

添加了将我的包含语句重新排列到描述 – Mark 2009-10-28 16:29:53

2

在课堂申报后你忘记了分号吗?

相关问题