Реализация дискретного вейвлет-преобразования C ++ - ошибка времени выполнения

0

Я ищу некоторую помощь, используя библиотеку Discrete Wavelet Transform (DWT), найденную здесь: wavelet2d.sourceforge.net/

Проблема заключается в ошибке времени выполнения, которая возникает при вызове функции DWT. Кажется, что он связан с вектором длины в вызове функции. Я хочу отметить, что этот код был опубликован как есть, и сообщалось, что он работал в докторантуре из Массачусетского технологического института. Я уверен, что эта ошибка вызвана тем, что я делаю неправильно. Я создал файл проекта для Microsoft Visual Studio 2013, который я включил здесь: skydrive.live.com/redir?resid=DF1EA4AE66DE04A3%21128

Примечание. Я поместил два файла dll в папку system32, а файл.lib включен в файл проекта MSVC++ Project, который ссылается на DLL. Я использовал dll release, но получаю тот же результат с отладочными файлами. Файл signal.txt используется файлом проекта wavedem1.cpp и работает.

Ошибка может быть легко сгенерирована, но вот необработанное исключение, которое я получаю: "Необработанное исключение в 0x7555D36F в WaveletCode.exe: исключение Microsoft C++: std :: length_error в ячейке памяти 0x002EF574".

Вот стек вызовов: http://img198.imageshack.us/img198/4306/9jdl.jpg Похоже, что строка 65 вызывает проблему, которая является вызовом функции DWT. Я попытался посмотреть "промежуточное окно" в MSVC++ 2013, но во время выполнения он был пуст.

И еще некоторые из MSVC++:

'WaveletCode.exe' (Win32): Loaded 'C:\Users\Matt\Desktop\WaveletCode\Debug\WaveletCode.exe'. Symbols loaded.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Cannot find or open the PDB file.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Cannot find or open the PDB file.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Cannot find or open the PDB file.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\wavelet2d.dll'. Cannot find or open the PDB file.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\libfftw3-3.dll'. Module was built without symbols.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. Cannot find or open the PDB file.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\msvcp100d.dll'. Cannot find or open the PDB file.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\msvcr100d.dll'. Cannot find or open the PDB file.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\msvcp120d.dll'. Cannot find or open the PDB file.
'WaveletCode.exe' (Win32): Loaded 'C:\Windows\System32\msvcr120d.dll'. Cannot find or open the PDB file.
First-chance exception at 0x644921A9 (wavelet2d.dll) in WaveletCode.exe: 0xC0000005: Access violation reading location 0x9F8ED620.
Unhandled exception at 0x644921A9 (wavelet2d.dll) in WaveletCode.exe: 0xC0000005: Access violation reading location 0x9F8ED620.
The program '[5532] WaveletCode.exe' has exited with code 0 (0x0).

Конечной целью является использование этой библиотеки на микроконтроллере для некоторых DSP. Благодарим вас за любую помощь/предложения, которые вы можете предоставить. Если вам нужна дополнительная информация, спросите меня, что я относительно новичок.

Спасибо.

Теги:
dll
dwt

1 ответ

0

У меня нет VS 2013, чтобы попробовать это, но по крайней мере одна проблема, которую я вижу, заключается в том, что ваша библиотека вейвлета импортирует стандартную библиотеку MSVCR100.dll (из VS 2010), тогда как ваше приложение импортирует MSVCR120D.dll (от VS 2013), Поскольку вы передаете объекты стандартной библиотеки (векторы) между ними, это может быть вашей проблемой, так как они не гарантируют совместимость.

  • 0
    Что я могу сделать, чтобы исправить это? Должен ли я скачать VS 2010?
  • 0
    Да, или перекомпилируйте библиотеку вейвлетов с VS 2013, если у вас есть исходники.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню