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

发布于 2025-01-02 22:04:14 字数 489 浏览 0 评论 0原文

我正在尝试在 Visual 中使用 Tamas Szalay 的 C# port of FFTW C# 2010,当我尝试使用 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 构建的。

I'm trying to use Tamas Szalay's C# port of FFTW in Visual C# 2010, and I'm getting the above error when I try to use a function from FFTW (in this case fftw.malloc). That error goes away if I manually move the dll into the project's /bin/debug/ folder, but then I get

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

which makes me think I have a deeper problem.

Possibly relevant: I'm running this on an x64 machine, and DependencyWalker says that fftwlib.dll is built for x86.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

信愁 2025-01-09 22:04:14

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

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

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

顺便说一句,我必须将 CallingConvention = CallingConvention.Cdecl) 添加到 FFTWlib 否则 VS2010 会抱怨。

Just wanted to clarify things here since I am doing exactly the same thing: I am using an x64 machine but I set the platform of the solution in Visual Studio to x86 so I can use edit and continue.

  1. There are both x86 and x64 versions of the FFTW DLL's. I keep them in separate directories for obvious reasons.

  2. If you want to force use of the 32-bit DLL's, then set your platform to x86 and copy the 32-bit FFTW DLL's to the starting directory of the project (defaults to wherever it builds; for example, .\bin\Debug).

As an aside, I had to add CallingConvention = CallingConvention.Cdecl) to every DLLImport statement in FFTWlib otherwise VS2010 would complain.

从此见与不见 2025-01-09 22:04:14

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

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

http://cl.ly/3s1J2q3u3E0n2F2y0z1K <-- 所在位置的屏幕截图。

You got to set your project CPU configuration to x86 instead of Any CPU if you are using external 32 bit code.

Any CPU is the default Visual Studio configuration, if you are running on a 64 bit OS, it will by default compile as 64 bit code, the problem is that if you need to load 32 bit DLLs like in your case, you will get format errors.

http://cl.ly/3s1J2q3u3E0n2F2y0z1K <-- screenshot where it is located.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文