我了解 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 中而不是动态链接?
根据我从评论/答案中学到的知识,我很乐意更新/编辑/改写我的问题,以便对大多数其他用户来说更有意义,因为我可能会使用术语