C++ fftw mingw预编译二进制文件和vs 2010的内存损坏?
我想知道是否有人在使用与VisualStudio2010项目链接的预编译mingw fftw二进制文件时从未遇到过内存损坏问题。奇怪的是,仅仅是fftw libs链接(由fftw doc解释的lib/def:libfftw3-3.def生成)就给我的项目带来了麻烦,即使没有调用任何fftw API。 好吧,我将按照作者的建议,在VS2010中从头开始编译fftw,但我很好奇,仅仅链接lib会产生副作用。据我所知,它似乎不是我们的C++代码的问题… 一些环境。细节:在VS 2010 中赢得32位非托管C++项目C++ fftw mingw预编译二进制文件和vs 2010的内存损坏?,c++,visual-studio-2010,fftw,C++,Visual Studio 2010,Fftw,我想知道是否有人在使用与VisualStudio2010项目链接的预编译mingw fftw二进制文件时从未遇到过内存损坏问题。奇怪的是,仅仅是fftw libs链接(由fftw doc解释的lib/def:libfftw3-3.def生成)就给我的项目带来了麻烦,即使没有调用任何fftw API。 好吧,我将按照作者的建议,在VS2010中从头开始编译fftw,但我很好奇,仅仅链接lib会产生副作用。据我所知,它似乎不是我们的C++代码的问题… 一些环境。细节:在VS 2010 中赢得32位非
谢谢大家! fftw确实做了一些重要的代码生成/分析/CPU定位 很明显,第一次运行时他们就这么做了。所以可能有
很抱歉,我不记得具体的(位置)我不知道fftw库是什么,所以我不确定它具体是做什么导致不稳定的。DLL有可能在加载时执行代码,因此您没有主动调用它并不一定意味着它什么也没做 但是,MinGW链接到随Windows系统分发的
msvcrt.dll
运行时,而在VS 2010中使用dll运行时的正常构建将链接到MSVCRT100.dll
。混合运行时DLL是一个可能导致神秘问题的领域,特别是如果从一个运行时进行分配并在另一个运行时释放(或者甚至在另一个运行时使用,我相信如果涉及调试运行时的话)
您最好尝试使用VS2010重新编译fftw库(我假设源代码可用-希望使用MSVC重建不会太困难)
有可能说服VS 2010使用msvcrt.dll运行时(微软会这样做),但细节不明显,我的笔记在别处。内存损坏的症状是什么?随机堆损坏、新操作符中的错误,调用外部dllsUpdate时出现结构化异常:似乎有一些VS2010项目文件可以帮助您使用该工具链构建fftw库: