离散小波变换C ++实现 - 运行时错误

时间:2014-01-03 18:40:31

标签: c++ dll dwt

我正在寻找一些使用此处的离散小波变换(DWT)库的帮助:  wavelet2d.sourceforge.net /

问题是运行时错误,它发生在DWT函数调用时。它似乎与函数调用中的长度向量相关联。我想要注意的是,此代码按原样发布,并且据报道来自麻省理工学院的博士后工作。我很确定这个错误是由于我做错了。 我为Microsoft Visual Studio 2013创建了一个项目文件,我在这里包含:  skydrive.live.com/redir?resid=DF1EA4AE66DE04A3%21128

注意:我将两个dll文件放在system32文件夹中,.lib文件包含在链接到dll的MSVC ++ Project文件中。我使用了发行版dll,但我得到了与调试文件相同的结果。 signal.txt由wavedem1.cpp项目文件使用并在其上运行。

可以轻松生成错误,但这是我得到的未处理的异常:  “WaveletCode.exe中0x7555D36F处的未处理异常:Microsoft C ++异常:内存位置0x002EF574处的std :: length_error。”

这是调用堆栈: 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使用此库。 感谢您提供的任何帮助/建议。如果您需要更多信息,请问我对此比较陌生。

谢谢。

1 个答案:

答案 0 :(得分:0)

我没有VS 2013试试这个,但至少有一个问题我看到你的wavelet库导入了MSVCR100.dll标准库(来自VS 2010),而你的应用程序导入了MSVCR120D.dll(来自VS 2013)。由于您在两者之间传递标准库对象(向量),这可能是您的问题,因为它们不能保证兼容。

相关问题