2009-10-28 4 views
0

FileReader.cpp 클래스 내에 살았던 일부 암호 해독 코드 (wincrypt.h 사용)가 있습니다. 코드를 분리하고이 암호 해독 방법을 MyCrypt.cpp 클래스로 푸시하려고합니다. 그러나, 그것을 옮길 때 나는 전에 직면하지 못했던 수많은 오류가 붙어 있습니다. wincrypt.h 또는 windows.h 특정 명령에 대해 "식별자를 찾을 수 없습니다"또는 "선언되지 않은 식별자"를 수신하고 있습니다.한 클래스의 코드를 새 클래스로 옮길 때 문제가 있습니까?

무엇을 제공합니까?

더 상세 ..

샘플 오류 :

오류 C2065 'HCRYPTPROV'미표시 식별자

오류 C3861 '를 CryptDecrypt'

발견 식별자하지

FileReader.cpp에서와 마찬가지로 windows.h 및 wincrypt.h를 포함합니다.

#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를' 'MyCrypt :: DecryptMyFile (char *, char *, int, int)': 오버로드 된 함수는 ''에서 반환 유형에 의해서만 다릅니다. ':'은 잘못된 것입니다 ( ';') 오류 C2556 : 'MyCrypt * MyCrypt :: DecryptMyFile 숯불 * MyCrypt :: DecryptMyFile (숯불 *, 숯불 *, INT, INT)

하지만 갑자기 그것이 말하고이 재정을 사용합니까 내 코드에서 ..

+0

#include 문제? – JRL

+1

자세한 내용을 게시 할 수 있습니까? 예를 들어 오류가 발생한 행과 오류가 발생한 것처럼 말입니다. – Herms

+0

MyCrypt.cpp는 FileReader.cpp와 동일한 방식으로 #include wincrypt.h 및 windows.h를 포함합니까? –

답변

2

MyCrypt.h를 확인하고 닫는 중괄호 뒤에 ;이 있는지 확인하십시오. 나는 그것을 놓쳤을 때 꽤 이상한 오류 메시지를 보았다. 게시 한 샘플에 누락되었습니다.

+0

... 아주 불행합니다. – Mark

+0

다른 언어를 잠시 사용하고 나면 C++로 돌아갈 때 몇 번이나 물었습니다. 그것은 제가 지금 확인한 첫 번째 것 중 하나입니다. :) – Herms

1

당신이 이사의 코드처럼 소리 FileReader.cpp 중 하나가 MyCrypt.cpp에없는 클래스의 멤버 변수를 참조하거나 MyCrypt.cpp에 포함되지 않은 FileReader.cpp에 #include 된 메서드를 참조했습니다.

+0

이것은 제 첫 인상 이었지만 그럴 듯하지는 않습니다. 몇 가지 세부 정보로 내 설명을 업데이트했습니다. – Mark

0

windows.h 및 wincrypt.h와 같은 새 MyCrypt.cpp 파일에 일부 #include가 누락 된 것처럼 들리지만 실제로 도움이 될 실제 오류가 필요합니다.

+0

나는 이것도 생각했다. 그러나 나는 이중 검사하는 동안 그렇게 믿지 않는다. 내 설명에 대한 자세한 내용을 추가했습니다 – Mark

0

몇 가지 아이디어 (? 그들은 지금, 이동 어쩌면 당신은 새로운 클래스의 포인터를 통해 그들에게 전화하는 것을 잊었다 기존의 클래스에 있었고 이후)

  • 가 먼저 객체를 참조하지 않고 메소드를 호출하는
  • 당신은 include 문 순서를 바꿀 수 있습니다.
  • 미리 컴파일 된 헤더를 사용하고 있습니까? 문제가 해결되는지 보지 않고도 시도 할 수 있습니다.
+0

이러한 것들을 시도하고 시도하는 중 ... 미리 컴파일 된 헤더 참조를 제거하면 컴파일러 오류가 발생합니다. "미리 컴파일 된 헤더를 찾는 중에 예기치 않은 파일 끝" – Mark

+0

설명에 내 include 문을 재정렬 한 결과를 추가했습니다. – Mark

2

클래스 선언 다음에 세미콜론을 잊어 버렸습니까?

관련 문제