2011-11-11 7 views
1

私は、オープンソースのCrytoLib C++プロジェクトで使用されているいくつかのメソッドを使用してC#インターフェイスを作成することが任されています。私は、LIBファイルの管理されたラッパーを作成しようとしています...しかし、私はいくつかのエラーが既に発生していると私は間違って何をしているのか分かりませんが、この時点ではかなり簡単です。 C++ヘッダーファイルのエラー

私のヘッダファイル:

// 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:型指定子がない - 想定されています。注:C++はdefault-intをサポートしていません

エラーC4430:型指定子がない - 想定されています。注:C++は、私はすべてのC++を行ってもそのこれは簡単ですし、私は脳が死んでいるのです期待して、限られたてきたので、それがしばらくされているデフォルト-INT

をサポートしていません。

もう一度おねがいします!

EDIT:注意してください...エラーの全てを「BOOL復号化...」ラインである

+0

これは 'ref'ですか、使用しているコンパイラの拡張ですか?それは間違いなく標準C++ではないからです。また、BYTE、UINTなどはほとんどあなたが言及していないヘッダーで定義されています(標準言語の一部ではありません)。あるいは、そのヘッダーを含めるのを忘れてしまったということでしょうか?私が気づくもう一つの事柄:名前空間レベルの 'public'は確かにそこに属していません。名前空間はアクセス仕様をサポートしていません。 – celtschk

+0

@celtschk C++/cli –

+0

C4430には説明文がありません。これはコンパイラがタイプなしの変数名であることがわかったことを意味します。たとえば、 'BOOL'が定義されていないと、2つの識別子の宣言が見えて、どちらの型も追加されていないと考えられます。 K&R Cでは、型を持たずに変数を定義することができたので(int型を想定しています)、エラーメッセージはあなたがしようとしているものとみなします。 –

答えて

4

一部の型定義が不足しているため、おそらく最初のエラーが発生しているようです。他のエラーはおそらく、それらの欠落した定義の結果である可能性があります。

BYTEを定義するファイルを含める必要があります。仕事をする必要があり、あなたのファイルの先頭にこれを置く:

#include <windows.h> 

か、ウィンドウヘッダの全体に引っ張って気にしないならば、あなたは試みることができる:

#include <windef.h> 
+2

可能であれば、ヘッダファイルに ' 'を含めることをお勧めします。 –

+0

それは... arghh ...私の考えのように私のStdafx.hファイルに私のインクルードを保存していてはいけません。 – RiddlerDev

+1

'#include 'を使用すると、コンパイルエラーが発生します。代わりに '#include 'を使用してください。 – philipvr

2

それはBYTE型を認識しないことを伝えるだ - その後エラーが発生することができること。したがって、クラス宣言の前にBYTEを定義するか、またはBYTEを定義するヘッダーファイルを#includeする必要があります。あなたの定義の残りは私にはうまく見えます。

1

​​ですユーザー定義の型であるため、ヘッダーファイルをインクルードする必要があります。 Windowsのデータ型を定義するヘッダファイルは<WinDef.h>,

1

です。あなたはC#プログラマです;-)。あなたはC#スタイル "using System;"をコピーしたようです。このような場合は、

using namespace System; 

も参照してくださいhttp://en.wikipedia.org/wiki/C%2B%2B/CLI

#using <mscorlib.dll> 

する必要があるが、ヘッダファイル内の "名前空間を使用して" 絶対に使用しないでください。

関連する問題