Я использую System.Runtime.InteropServices для вызова нескольких функций, написанных на C++ из моего приложения C#. У меня просто проблемы с определенной функцией, которая возвращает массив.Проблемы с упаковкой C++ DLL из C#
Я видел, что моя функция не должна возвращать что-либо, а указатель на «возвращаемую переменную» должен быть включен. Но я не справляюсь с этим.
Например, если у меня есть функция в C++
void func(double *y, double *x){...}
, которая манипулирует массив х и возвращает массив у.
Я делаю:
-в моей .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.
Любой ключ?
Вы уверены, что имена 'func' и' function' верны? Потому что они не выглядят одинаково, как они должны ... – Timbo
Ваш первый фрагмент кода имеет «x» в качестве второго параметра, а ваши более поздние - в обратном порядке. Вы должны сделать это согласованным для ясности. –
И ваша функция работает только с массивами размером 5? Или вам нужен параметр размера? – crashmstr