如何在我的项目中使用 FFTW DLL 导入库 .lib 作为静态 .lib?

2024-05-06

我了解 C++ 和编译小型插件(始终基于类似且布局的工作流程)。虽然目前我需要将最新版本的 FFTW 编译成静态库(或者从编译版本中获取它,这应该会容易得多),但这给了我一个非常困难的时间。可能是因为我不知道编译的来龙去脉。请注意,我正在使用 Visual Studio 在 Windows 上工作。

因为我真的想知道这应该如何运作,所以我在这里问这个问题。

基本上我需要 Windows 上的 fftw3f 库的静态 .lib,我可以将其包含在另一个 Visual Studio 项目中。

我做的第一件事是从网站下载 FFTW 的 64 位 dll(希望我可以使用它)。http://www.fftw.org/install/windows.html http://www.fftw.org/install/windows.html

然后我完成了他们所说的附带步骤,即: 在 lib.exe 中运行以下命令。

 lib /def:libfftw3-3.def
 lib /def:libfftw3f-3.def
 lib /def:libfftw3l-3.def

我也这样做了,并获得了一个可以在我的项目中正确使用的 .lib 文件。我已经能够编译我的项目,但输出构建显然动态链接到库,而不是将其作为静态库包含在内。

我正在将项目编译为 .dll,但要求 fftw3f 库静态包含在我的输出中。

Using lib.exe /list libfftw3f-3.lib我发现 lib 文件引用了 libfftw3f-3.dll。

根据我的谷歌结果,这意味着我创建的 .lib 文件是DLL导入库代替静态库.

很难弄清楚如何表达我的问题,因为我不确定术语是什么以及发生了什么幕后。我猜:

  • 如何在我自己的项目中使用从 lib.exe 创建的 libfftw3f-3.lib 文件作为静态库。这样它就包含在我的输出 .dll 中而不是动态链接?

根据我从评论/答案中学到的知识,我很乐意更新/编辑/改写我的问题,以便对大多数其他用户来说更有意义,因为我可能会使用术语


您不能指望将 DLL 转换为静态库。

为了创建静态库,您需要从源代码重新编译该库,并输出目标为静态库。如果你无法获得源代码,那么你的目标就无法实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在我的项目中使用 FFTW DLL 导入库 .lib 作为静态 .lib? 的相关文章

随机推荐