- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的项目设置期间 - 当我对 cmake 的了解比现在更少时 - 我是 trying my hardest链接 FFTW 库。
C:\\path\\to\\fftw-3.3.5-dll64
包含.h
文件,.lib
文件(从 .def
文件生成)和 .dll
文件。
我最后做的是将这些链接添加到我的 CMakeLists.txt
:
add_executable(${TargetName} PRIVATE main.cpp)
target_include_directories(${TargetName} PRIVATE "C:\\path\\to\\fftw-3.3.5-dll64")
target_link_directories(${TargetName} PRIVATE "C:\\path\\to\\fftw-3.3.5-dll64")
target_link_libraries(${TargetName} PRIVATE libfftwf3-3)
构建此应用程序后,该应用程序仍然无法运行。最终,我发现在打开可执行文件时,Windows 正在寻找 libfftw3-3 dll 文件。当时我只是想让它工作,所以我复制了库中包含的 .dll
文件 - 尽管这是共享/动态链接,而不是静态链接。
我现在正在尝试正确地静态链接库;我从我的构建文件夹中删除了 dll,并将我的 CMakeLists.txt
文件过滤为:
add_executable(${TargetName} PRIVATE main.cpp)
target_include_directories(${TargetName} PRIVATE "C:\\path\\to\\fftw-3.3.5-dll64")
target_link_libraries(${TargetName} PRIVATE libfftwf3-3)
正如我所期望的那样,这构建了。然而,即使在我的 CMakeLists.txt
文件中,我已经采取了静态链接库的步骤,我仍然需要复制 dll 才能运行可执行文件(它的动态链接仍然)。
(成功)详细构建输出:https://pastebin.com/bbrZdd7r
最佳答案
您从 DEF 文件生成的 LIB 文件是“ stub ”。它们只包含足够的代码来加载 DLL 并从中调用函数。它们不包含实际的 FFTW 代码。您不能静态链接这些预构建的 FFTW LIB。
您需要先将FFTW 编译成静态库。它带有 CMake构建文件,您可以在其中关闭 BUILD_SHARED_LIBS
。
编辑:经过审查,您的问题几乎与 this one 相同, 答案相同。
关于c++ - 如何在 Windows 上静态链接 FFTW?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62906520/
我是一名优秀的程序员,十分优秀!