使用FFTWLib(C#):找不到libfftw3-3.dll

时间:2012-02-07 04:10:15

标签: c# fft fftw

我正在尝试在Visual C#2010中使用Tamas Szalay的C# port of FFTW,当我尝试使用FFTW中的函数(在本例中为fftw.malloc)时,我遇到了上述错误。如果我手动将dll移动到项目的/ bin / debug /文件夹中,那么该错误就会消失,但我得到了

An attempt was made to load a program with an incorrect format.
(Exception from HRESULT: 0x8007000B)
Method: IntPtr malloc(Int32)

这让我觉得我有更深层次的问题。

可能相关:我在x64机器上运行它,而DependencyWalker说fftwlib.dll是为x86构建的。

2 个答案:

答案 0 :(得分:2)

我想在这里澄清一下事情,因为我正在做同样的事情:我使用的是x64机器,但我在Visual Studio中将解决方案的平台设置为x86,所以我可以使用编辑并继续。

  1. 有FFTW DLL的x86和x64版本。出于显而易见的原因,我将它们保存在不同的目录中。

  2. 如果要强制使用32位DLL,则将平台设置为x86并将32位FFTW DLL复制到项目的起始目录(默认为构建的位置;例如, \ BIN \调试)。

  3. 顺便说一下,我必须在FFTWlib中的每个CallingConvention = CallingConvention.Cdecl)语句中添加DLLImport,否则VS2010会抱怨。

答案 1 :(得分:1)

如果使用外部32位代码,则必须将项目CPU配置设置为x86而不是任何CPU。

任何CPU都是默认的Visual Studio配置,如果你在64位操作系统上运行,它默认会编译为64位代码,问题是如果你需要像你的情况那样加载32位DLL,你会出现格式错误。

http://cl.ly/3s1J2q3u3E0n2F2y0z1K< - 截屏位置。