] Я хочу использовать JavaScript InfoVis Tooljit ( http: // thejit. org ), чтобы отобразить дерево узлов mptt в django.Как я могу создать требуемую структуру json (см. http://thejit.org/static/v20/Jit/Examples/Spacetree/example1.code.
{[...]
} Функция вычисляет БПФ двух двойных массивов (... У меня есть C ++ DLL с экспортированной функцией: Функция вычисляет БПФ двух двойных массивов (действительного и мнимого) и возвращает одиночный двойной массив с чередованием реальных и мнимых компонентов: {Re, Im, Re, Im, ...} Я не знаю, как вызвать эту функцию в C #.
Что я делаю: и когда я тестирую это следующим образом: я получаю исключение MarshalDirectiveException: Невозможно маршалировать «возвращаемое значение»: недопустимая комбинация управляемого / неуправляемого типа. Я предполагая, что это потому, что C ++ Изменить:
Я изменил подписи, поэтому теперь передаю дополнительную информацию: Мы всегда знаем, что длина вывода и проверяется следующим образом: Теперь я получаю исключение AccessViolationException, а не MarshalDirectiveException. extern "C" __declspec(dllexport) double* fft(double* dataReal, double* dataImag)
{
[...]
}
[DllImport("fft.dll")]
static extern double[] fft(double[] dataReal, double[] dataImag);
double[] foo = fft(new double[] { 1, 2, 3, 4 }, new double[] { 0, 0, 0, 0 });
double *
не совсем то же самое, что C # double []
, но я не уверен, как это исправить. Есть идеи? extern "C" __declspec(dllexport) void fft(double* dataReal, double* dataImag, int length, double* output);
будет 2x length
[DllImport("fft.dll")]
static extern void fft(double[] dataReal, double[] dataImag, int length, out double[] output);
double[] foo = new double[8];
fft(new double[] { 1, 2, 3, 4 }, new double[] { 0, 0, 0, 0 }, 4, out foo);