我的任务是创建一个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 ..."线
答案 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”。