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

时间:2014-01-21 17:34:57

标签: c++ visual-studio-2010 dll static-libraries fftw

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

由于我真的想知道这应该如何运作,我在这里提出这个问题。

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

我做的第一个是从网站下载64位dll的FFTW(希望我可以使用它)。 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。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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