Вызвать функцию 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);