2011-07-20 71 views
1

我有一個函數在C++寫成:如何將C#double []傳遞給需要常量double * pArr的C++函數? 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

您能向我們展示您在C#中的MyFunc聲明嗎?另外,什麼意思是「程序正在破壞」?你會得到一個編譯器錯誤/運行時錯誤/意外結果? – dtb

+0

你可以發佈Import屬性和MyFunc簽名嗎? –

+0

已更新爲代碼。 –

回答

1

你總是可以將一個非常量數組傳遞給一個需要一個常量數組的函數。該數組的const限定符意味着函數不會修改數組的內容。在傳遞給函數之前,數組不需要是常量;該函數將不會修改內容,由於聲明中的常量

0

常量性可以平凡添加。你的程序沒有錯。你一定錯過了其他一些細節。