C ++头文件错误

时间:2011-11-11 16:21:51

标签: header c++-cli wrapper

我的任务是创建一个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:语法错误:缺少';'在标识符'Decrypt'

之前      

错误C4430:缺少类型说明符 - 假设为int。注意:C ++不支持default-int

     

错误C4430:缺少类型说明符 - 假设为int。注意:C ++不支持default-int

我已经有一段时间了,因为我做了任何C ++,即使这是有限的,希望这很容易,我只是在脑子里死了。

再次感谢!

编辑:注意......所有错误都在" BOOL Decrypt ..."线

4 个答案:

答案 0 :(得分:4)

似乎你可能会收到第一个错误,因为你错过了一些类型定义。其他错误可能只是缺少定义的结果。

您需要包含一个定义BYTE的文件。将它放在文件的顶部应该可以完成这项工作:

#include <windows.h>

或者如果您不关心拉入整个Windows标题,可以尝试:

#include <windef.h>

答案 1 :(得分:2)

它告诉你它不能识别BYTE类型 - 之后可能会导致错误。因此,您需要在类声明之前定义BYTE,或者需要#include定义BYTE的头文件。你的定义的其余部分对我来说很好。

答案 2 :(得分:1)

BYTE是用户定义的类型,因此您需要包含定义它的头文件。定义Windows数据类型的头文件是<WinDef.h>

答案 3 :(得分:1)

你是C#程序员,不是你;-)。看起来你刚刚复制了C#样式“使用System;”如果是这种情况,则需要

#using <mscorlib.dll>

using namespace System;

另见http://en.wikipedia.org/wiki/C%2B%2B/CLI

但是请不要在头文件中使用“using namespace”。