Ошибки файла заголовка C ++ - PullRequest
1 голос
/ 11 ноября 2011

Мне было поручено создать интерфейс C # с некоторыми методами, которые используются в проекте Open Source CrytoLib C ++. Я пытаюсь создать управляемую оболочку для файла LIB ... однако я уже получаю некоторые ошибки и не могу понять, что я делаю неправильно, поскольку на данный момент это кажется довольно простым.

Мой заголовочный файл:

// CryptoLibWrapper.h

#pragma once

using namespace System;

namespace CryptoLibWrapper {

public ref class DefaultDecryptorWithMAC
{
public:
    BOOL Decrypt(BYTE const* pEncrypted, UINT uLength, BYTE** ppBuffer, DWORD* pdwLength);
};
}

Ошибки, которые я получаю ...

ошибка C2061: синтаксическая ошибка: идентификатор 'BYTE'

ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором «Расшифровать»

ошибка C4430: отсутствует указатель типа - предполагается int. Примечание: C ++ не поддерживает default-int

ошибка C4430: отсутствует указатель типа - предполагается int. Примечание: C ++ не поддерживает default-int

Прошло много времени с тех пор, как я сделал какой-нибудь C ++, и даже это было ограничено, надеясь, что это легко, и я просто с ума схожу.

Еще раз спасибо!

РЕДАКТИРОВАТЬ: Примечание ... все ошибки находятся в строке "BOOL Decrypt ..."

Ответы [ 4 ]

4 голосов
/ 11 ноября 2011

Похоже, вы, вероятно, получаете первую ошибку, потому что вам не хватает некоторых определений типов. Другие ошибки, вероятно, являются результатом этих отсутствующих определений.

Вам необходимо включить файл, который определяет BYTE. Поместив это в верхнюю часть вашего файла, сделайте следующее:

#include <windows.h>

или, если вам не нужно извлекать заголовки окон целиком, вы можете попробовать:

#include <windef.h>
2 голосов
/ 11 ноября 2011

Это говорит вам, что он не распознает тип BYTE - это может быть причиной ошибок после этого.Таким образом, вам нужно либо определить BYTE перед объявлением класса, либо #include заголовочный файл, который определяет BYTE.Остальная часть вашего определения выглядит хорошо для меня.

1 голос
/ 11 ноября 2011

Вы не программист на C #, не так ли ;-).Похоже, вы только что скопировали стиль C # "using System;"Если это так, вам нужно

#using <mscorlib.dll>

до

using namespace System;

См. Также http://en.wikipedia.org/wiki/C%2B%2B/CLI

Но, пожалуйста, никогда не используйте «использование пространства имен» внутризаголовочный файл.

1 голос
/ 11 ноября 2011

BYTE является определяемым пользователем типом, поэтому вам необходимо включить заголовочный файл, который его определяет.Заголовочный файл, который определяет типы данных Windows: <WinDef.h>,

...