Вызвать функцию c++ из .dll - C#

Узнай цену своей работы

Формулировка задачи:

Имеется dll написанный на с++. В нем одна из вызываемых функций имеет вид
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&);
}
Как я понимаю вызывать надо следующим образом [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); Так?

Решение задачи: «Вызвать функцию 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5