0

我想知道是否有人从未使用与 Visual Studio 2010 项目链接的预编译 mingw fftw 二进制文件遇到内存损坏问题。奇怪的是,即使没有调用任何 fftw API,也只是 fftw 库链接(使用 lib /def:libfftw3-3.def 生成,如 fftw doc 所述)会给我的项目带来麻烦。好吧,我将尝试按照作者的建议在 vs 2010 中从头开始编译 fftw,但我很好奇仅链接 lib 会导致副作用的事实。据我所知,这似乎不是我们的 c++ 代码的问题......

一些环境。详细信息:赢得 32 位,vs 2010 中的非托管 c++ 项目

谢谢!

4

2 回答 2

1

我不知道 fftw 库是什么,所以我不确定它可能会具体做什么来导致不稳定。DLL 可以在加载时执行代码,因此您没有主动调用它的事实并不一定意味着它没有做任何事情。

但是,MinGW 链接到msvcrt.dll随 Windows 系统分发的运行时,而在 VS 2010 中使用 DLL 运行时的正常构建将链接到MSVCRT100.DLL. 混合运行时 DLL 是一个可能导致神秘问题的领域,特别是如果从一个运行时进行分配并在另一个运行时释放(或者甚至在另一个运行时使用,我相信如果涉及调试运行时)。

您最好的选择可能是尝试使用 VS 2010 重新编译 fftw 库(我假设源代码可用 - 希望使用 MSVC 重新编译不会太困难)。

可以说服 VS 2010 使用 msvcrt.dll 运行时(微软这样做),但细节并不明显,我的笔记在别处。

于 2011-05-17T20:10:14.993 回答
0

fftw 确实做了一些重要的代码生成/分析/CPU 定位;

显然他们在第一次运行时就这样做了。所以可能有

  1. 阻止初始分析运行成功的错误(尝试以管理员身份运行一次?)
  2. 来自不兼容安装的剩余配置;我猜fftw会进行完整性检查以验证找到的配置是否与当前运行的架构匹配,但如果该过程中出现问题,您可以从查找并手动删除该配置数据中受益

对不起,我不记得细节(地点)

于 2011-05-17T20:09:18.677 回答