【问题标题】:Discrete Wavelet Transform C++ Implementation - Run time error离散小波变换 C++ 实现 - 运行时错误
【发布时间】:2014-01-03 18:40:31
【问题描述】:

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

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

注意:我将两个 dll 文件放在 system32 文件夹中,.lib 文件包含在链接到 dll 的 MSVC++ 项目文件中。我使用了发布 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 的微控制器上使用这个库。 感谢您提供的任何帮助/建议。如果您需要更多信息,请询问我对此比较陌生。

谢谢。

【问题讨论】:

    标签: c++ dll dwt


    【解决方案1】:

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

    【讨论】:

    • 是的,或者如果你有源码的话,用VS 2013重新编译小波库。
    • 我没有资源。目前我正在从 Dream Spark 下载 VS 2010 的副本。谢谢您的建议。我会发回结果。
    • 将 .lib 文件添加到项目属性>链接器>常规下的附加依赖项后出现新错误:1>链接:致命错误 LNK1123:转换为 COFF 期间失败:文件无效或损坏
    • 可能您将链接器指向了错误的文件,但我只是猜测。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 2018-10-20
    • 2012-10-30
    • 2013-07-20
    • 2012-05-23
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多