2011-10-21 17 views
0

C++ DLL関数宣言がCの整数配列を渡す++ DLL

static void __clrcall BubbleSort(int* arrayToSort,int size); 

マイC++ DLL関数は、C#で

void Sort::BubbleSort(int* sortarray,int size) 
    { 
     int i,j; 
     int temp=0; 
     for(i=0; i< (size - 1); ++i) 
     { 
      for(j = i + 1; j > 0; --j) 
      { 
       if(sortarray[j] < sortarray[j-1]) 
       { 
        temp = sortarray[j]; 
        sortarray[j] = sortarray[j - 1]; 
        sortarray[j - 1] = temp; 
       } 
      } 
     } 
    } 

である、私は

Sort.Sort.BubbleSort(arrayToBeSort,5); 

として機能上方accesssingいしかし、シャープなコンパイラはエラーを返します

'Sort.Sort.BubbleSort(int型*、int型)' の10

最良のオーバーロードされたメソッドの試合では、いくつかの無効な引数を持ち と 引数1: 'int型*'

+2

'Sort.Sort.BubbleSort'が –

+0

機能は、C# – user1006897

+0

第一からアクセスされたC#コードで宣言されている方法ソートは名前空間です。第2ソートはクラス名です – user1006897

答えて

2

配列中に 'int型[]' から変換することはできません管理されたC++は管理された構文を使用する必要があります。

static void __clrcall BubbleSort(array<int>^ arrayToSort, int size) 

これは

public static void BubbleSort(int[] array, int size); 

あなたの宣言にC#で変換は、代わりにポインタを使用してC#の宣言(安全でないコード)と一致します。

public static void BubbleSort(int* array, int size); 

あなたが参照して値を渡す必要がある場合は、このような何かを書く必要があります。

static void __clrcall MyFunc(array<int>^% arrayByReference) 
+0

ありがとうございます – user1006897

+0

C# – user1006897

+0

から参照としてこの配列を渡すにはどうすればいいですか?この特別な問題については、配列を参照渡しせずにバブルソート関数で配列の内容を変更できます。 –

関連する問題