Как гласит заголовок: я пытаюсь использовать C # порт FFTW от Tamas Szalay в Visual C # 2010 Professional (пробная версия), и я получаю вышеуказанную ошибку при попытке использовать двапреобразование.(Проблема сохраняется, когда я переключаюсь на dft_c2r_2d ()).Другие функции (в частности, fftw.malloc ()) работают нормально.
Подробности:
unsafe void FFTFind(IntPtr Scan0, int stride, int width, int height, Rectangle roi)
{
IntPtr ComplexImage = fftw.malloc(width * height * 16);
double[] pComplexImage = new double[width * height * 2];
byte* pScan0 = (byte*)Scan0.ToPointer();
Console.WriteLine("3");
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
pComplexImage[x * y * 2] = pScan0[y * stride + x * 4];
//pComplexImage[x * y * 2] = pScan0[y * stride + x];
}
}
Console.WriteLine("3.05");
Marshal.Copy(pComplexImage, 0, ComplexImage, width * height * 2);
Console.WriteLine("Starting FFTFind");
FFTFindKernel(ComplexImage, stride, width, height, roi);
}
unsafe void FFTFindKernel(IntPtr imageIn, int stride, int width, int height, Rectangle roi)
{
Console.WriteLine("3.1");
IntPtr hScan0 = (IntPtr) GCHandle.Alloc(imageIn, GCHandleType.Pinned);
Console.WriteLine("3.3");
IntPtr FourierPlan;
Console.WriteLine("3.5");
int start = System.Environment.TickCount;
Console.WriteLine("3.7");
FourierPlan = fftw.dft_r2c_2d(width, height, hScan0, hScan0, 0);
Console.WriteLine("4");
fftw.execute(FourierPlan);
Console.WriteLine("Time: {0} ms", (System.Environment.TickCount - start));
}
Консоль печатает до «3,7».Попытка запустить FourierPlan = ...
вызывает сбой программы и всплывающее окно с сообщением:
vshost.exe has stopped working.
Отключение хост-процесса Visual Studio заменяет только «vshost.exe» на «FFTFind».
Возможно, актуально: я запускаю это в среде x64 (Windows Server Standard), но библиотеки и программы x86.Это ранее вызывало проблему в Visual C # 2010 Express , которая была решена путем переключения на Профессиональную пробную версию и последующего изменения цели конфигурации вручную с «x86» на «Любой ЦП».
ОБНОВЛЕНИЕ: Запуск предоставленного тестового кода работает нормально.