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