如何在我的项目中使用fftw dll导入库.lib作为静态.lib

How to use FFTW DLL import library .lib as a static .lib in my project?

本文关键字:lib dll 导入 静态 fftw 我的 项目      更新时间:2023-10-16

我知道C 并编译小插件(始终基于相似且布置的工作流程)。尽管目前,我需要将最新版本的FFTW编译到静态库中(或从编译版本中获取它应该容易得多的版本),这给我带来了疯狂的困难。可能是因为我不知道编译的来龙去脉。作为注释,我正在使用Visual Studio在Windows上工作。

由于我真的想知道这应该如何工作,所以我在这里问问题。

基本上,我需要在Windows上的FFTW3F库的静态.lib,我可以在另一个Visual Studio Project中包含。

我做的第一个是从网站下载FFTW的64位DLL(希望我可以使用此)。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库静态包含在我的输出中。

使用 lib.exe /list libfftw3f-3.lib我能够发现lib文件是引用libfftw3f-3.dll。

根据我的Google结果,这意味着我创建的.lib文件是 dll导入库,而不是 static library

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

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

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

您无法期望将DLL转换为静态库。

为了创建一个静态库,您需要从其源代码重新编译库,其输出目标是静态库。如果您无法获得源代码,则无法实现您的目标。