2011-07-20 8 views
1

私はCで関数++のように書かれている:定数double * pArrを必要とするC++関数にC#double []を渡すには? C++は、C#の

MyFunc(const double* pArray, int length); 

私はそれに非定数配列を渡す必要があります:私はこれを行うとき

//C# 
double[] myDoubleArray = new double[] { 1, 2, 3, 4, 5 }; 

MyFunc(myDoubleArray, 5); 

プログラムが破壊されます。

編集:

//C# declaration 

[DllImport(@"RTATMATHLIB.dll", EntryPoint = "[email protected]@[email protected]")] 
public static extern double MyFunc(double[] data, int length); 

//C# usage 
public static double MyFunc(double[] data) 
{ 
    return MyFunc(data, data.Length); 
} 

//C++ export 
__declspec(dllexport) double MyFunc(const double* data, int length); 


//C++ signature 
double MyFunc(const double* data, int length) 
{ 
    return 0; //does not quite matter what it returns... 
} 
+0

MyFuncの宣言をC#で表示できますか?また、「プログラムが壊れている」とはどういう意味ですか?あなたはコンパイラエラー/ランタイムエラー/予期しない結果を得ますか? – dtb

+0

Import属性とMyFuncシグネチャを投稿できますか? –

+0

コードで更新しました。 –

答えて

1

定数配列を必要とする関数に非定数配列を渡すことができます。配列のconst修飾子は、関数が配列の内容を変更しないことを意味します。関数に渡す前に配列を定数にする必要はありません。関数は宣言のconstのため内容を変更しません

0

const性は自明追加することができます。あなたのプログラムは間違っていません。あなたは他の詳細を見逃しているにちがいありません。

関連する問題