Вызов функции из DLL (C++) с передачей указателя на массив - C#
Формулировка задачи:
Добрый день!
Проблема следующая: нужно вызвать функцию из DLL (написана на c++). При этом в качестве параметров передаются указатели на массив и строку. DLL должна записать в этот массив данные, но программа "падает", помогите, пожалуйста, решить проблему.
вот так выглядит функция:
xx - массив из 6-и элементов double
serr - строка
мой код на C#:
другие функции из этой DLL вызываются нормально, если они не меняют данные по ссылкам (указателям), а просто возвращают значение.
Заранее спасибо!
С уважением.
ext_def( int32 ) swe_calc(
double tjd, int ipl, int32 iflag,
double *xx,
char *serr);
...
[DllImport("swedll32.dll", CallingConvention = CallingConvention.StdCall,
EntryPoint = "_swe_calc@24")]
unsafe public static extern int swe_calc(double tjd, int ipl, int iflag, out double[] xx, out string serr);double d = 0;
...
unsafe
{
string s = "";
double[] dArray = new double[6];
Swedll.swe_calc(1, 1, 1, out dArray, out s);
d = dArray[0];
}Решение задачи: «Вызов функции из DLL (C++) с передачей указателя на массив»
textual
Листинг программы
StringBuilder sb = new StringBuilder(255); double[] dArray = new double[6]; Swedll.swe_calc(10.0, 1, 1, dArray, sb); MessageBox.Show(sb.ToString());