我对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导入库而不是静态库。
很难弄明白如何用短语来表达我的问题,因为我不确定术语是什么以及在幕后发生了什么。我想:
根据我从评论/答案中学到的内容,我很乐意更新/编辑/重新定义我的问题,以便对大多数其他用户更有意义,因为我很可能会使用这些术语
答案 0 :(得分:1)
您不能指望将DLL转换为静态库。
为了创建静态库,您需要从源代码重新编译库,输出目标是静态库。如果您无法获得源代码,那么您的目标就无法实现。