Вызов функции из 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());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д