2009-10-28 16 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

在課堂申報後你忘記了分號嗎?

相關問題