Я использую System.Runtime.InteropServices для вызова нескольких функций, написанных на C ++, из моего приложения на C #.У меня просто проблемы с конкретной функцией, которая возвращает массив.
Я видел, что моя функция не должна ничего возвращать, и указатель на «возвращаемую переменную» должен быть en entry.Но я не могу сделать это правильно.
Например, если у меня есть функция в c ++
void func(double *y, double *x){...}
, которая манипулирует массивом x и возвращает массив y.
Я делаю:
- в моем .h:
extern "C" __declspec(dllexport) void func(double *y,double *x);
- в моем .cpp:
__declspec(dllexport) void func(double *y,double *x){...}
- в моем коде c #:
static class AnyClass
{
[DllImport(dllPath)]
public extern static void func(out double[] y, double[] x);
int otherfunc
{
double[] x = new double[5];
double[] y = new double[5];
...
func(out y, x);
}
}
, но это дает мне исключение System.EntryPointNotFoundException.
Любая подсказка?