Вызвать функцию c++ из .dll - C#
Формулировка задачи:
Имеется dll написанный на с++.
В нем одна из вызываемых функций имеет вид
Как я понимаю вызывать надо следующим образом
[DllImport("unitroot.dll")]
public static extern int adf_p(.. ?????...)
Что нужно указывать там где поставил знаки вопросов? Что за double* data? Там должен быть массив данных, над которым будут производится исчисления, а не одно значение double.
И как потом использовать эту функцию в программе?
double tstat;
double pvalue;
double[] array = {1,2,5,7,9,6,3,2,4,5,8,9};
adf_p(array, 0, 0, 0, out tstat, out pvalue);
Так?
extern "C" { /* ADF Test with pointer adf_p(double* data, int nobs, int model,int lag_length,double& tstat, double& pvalue); data = Pointer to datapoints nobs = Number of observations. model => 0 = no constant, no trend 1 = constant, no trend 2 = constant, trend lag_length = lagged difference tstat = reference t-Statistic pvalue = reference P-Value (MacKinnon (1996)) return => Errorcode 0 = Everything is OK 1 = Model is not 0,1 or 2 2 = Too few Observations 3 = Covariance matrix is singular */ __declspec(dllexport) int _stdcall adf_p(double*, int, int,int,double&, double&); }
Решение задачи: «Вызвать функцию c++ из .dll»
textual
Листинг программы
[DllImport("unitroot.dll")] public static extern int adf_p(double[] data, int nobs, int model,int lag_length,ref double tstat, ref double pvalue);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д