将 OpenBLAS 与 Qt Creator 项目链接
Linking OpenBLAS with Qt Creator project
我正在使用 Qt Creator 进行开发。我想使用犰狳线性代数库。因此,我在我的 pro 文件中使用了以下代码:
INCLUDEPATH += C:\armadillo-7.950.1\include
LIBS += \
-LC:\armadillo-7.950.1\examples\lib_win64 \
-llapack_win64_MT \
-lblas_win64_MT
一切都很好,项目编译和链接正确。下一个任务是用 OpenBLAS 替换 LAPACK 和 BLAS。于是pro文件改成如下:
INCLUDEPATH += C:\armadillo-7.950.1\include \
C:\OpenBLAS-v0.2.19-Win64-int32\include
LIBS += \
-LC:\OpenBLAS-v0.2.19-Win64-int32\lib \
-llibopenblas
现在我收到错误:LNK1104:无法打开文件 'libopenblas.lib'。我已经下载了 windows 个 OpenBLAS 二进制文件。安装后的文件夹结构如图所示:installed OpenBLAS folder
请告诉我出了什么问题?
谢谢。
我不熟悉 OpenBLAS,但您的配置看起来是正确的。
在 Windows 上,或者至少对于 MSVC,除了用于运行时的 DLL 文件之外,您还需要一个 .lib 文件到 link。相反,OpenBLAS 似乎安装了一个神秘的 .dll.a 文件。听起来应该是同一件事:
https://github.com/xianyi/OpenBLAS/wiki/How-to-use-OpenBLAS-in-Microsoft-Visual-Studio
可能重命名它可以解决问题,但您可能需要从源代码重建才能获取文件。
这个问题有两个原因:
- .lib 文件的奇怪命名为 libopenblas.dll.a,即使包被称为 windows 二进制。
- 不完整的二进制包----它不包含所有必需的 dll
解决方案:
选择一个二进制文件——win 64 或 win32 并下载。
按照 Yuriy 的建议将 libopenblas.dll.a 重命名为 libopenblas.lib
从 https://sourceforge.net/projects/openblas/files/v0.2.14/ 下载所需的缺失 DLL 再次捆绑在奇怪命名的 zip 文件 "mingw64_dll" 或 "mingw32_dll" 下,具体取决于您在步骤中下载的二进制类型1. 这些 zip 文件包含 "libgcc_s_seh-1.dll"、"libgfortran-3.dll" 和 "libquadmath-0.dll"
像我对您的项目所做的那样添加 include 和 lib,并根据您下载的二进制文件使用正确的目标构建,即 win64 或 X86
从 OpenBLAS 二进制文件的 bin 文件夹复制 libopenblas.dll,从 "mingw64_dll" 或 [=54] 复制 "libgcc_s_seh-1.dll"、"libgfortran-3.dll"、"libquadmath-0.dll" =] 根据二进制类型构建调试或发布 exe 所在的目录。
运行 你的程序,你很高兴。
如果你想避免一次又一次的复制,为包含这些 DLL 的路径设置一个必需的系统环境变量
我正在使用 Qt Creator 进行开发。我想使用犰狳线性代数库。因此,我在我的 pro 文件中使用了以下代码:
INCLUDEPATH += C:\armadillo-7.950.1\include
LIBS += \
-LC:\armadillo-7.950.1\examples\lib_win64 \
-llapack_win64_MT \
-lblas_win64_MT
一切都很好,项目编译和链接正确。下一个任务是用 OpenBLAS 替换 LAPACK 和 BLAS。于是pro文件改成如下:
INCLUDEPATH += C:\armadillo-7.950.1\include \
C:\OpenBLAS-v0.2.19-Win64-int32\include
LIBS += \
-LC:\OpenBLAS-v0.2.19-Win64-int32\lib \
-llibopenblas
现在我收到错误:LNK1104:无法打开文件 'libopenblas.lib'。我已经下载了 windows 个 OpenBLAS 二进制文件。安装后的文件夹结构如图所示:installed OpenBLAS folder
请告诉我出了什么问题?
谢谢。
我不熟悉 OpenBLAS,但您的配置看起来是正确的。 在 Windows 上,或者至少对于 MSVC,除了用于运行时的 DLL 文件之外,您还需要一个 .lib 文件到 link。相反,OpenBLAS 似乎安装了一个神秘的 .dll.a 文件。听起来应该是同一件事: https://github.com/xianyi/OpenBLAS/wiki/How-to-use-OpenBLAS-in-Microsoft-Visual-Studio 可能重命名它可以解决问题,但您可能需要从源代码重建才能获取文件。
这个问题有两个原因:
- .lib 文件的奇怪命名为 libopenblas.dll.a,即使包被称为 windows 二进制。
- 不完整的二进制包----它不包含所有必需的 dll
解决方案:
选择一个二进制文件——win 64 或 win32 并下载。
按照 Yuriy 的建议将 libopenblas.dll.a 重命名为 libopenblas.lib
从 https://sourceforge.net/projects/openblas/files/v0.2.14/ 下载所需的缺失 DLL 再次捆绑在奇怪命名的 zip 文件 "mingw64_dll" 或 "mingw32_dll" 下,具体取决于您在步骤中下载的二进制类型1. 这些 zip 文件包含 "libgcc_s_seh-1.dll"、"libgfortran-3.dll" 和 "libquadmath-0.dll"
像我对您的项目所做的那样添加 include 和 lib,并根据您下载的二进制文件使用正确的目标构建,即 win64 或 X86
从 OpenBLAS 二进制文件的 bin 文件夹复制 libopenblas.dll,从 "mingw64_dll" 或 [=54] 复制 "libgcc_s_seh-1.dll"、"libgfortran-3.dll"、"libquadmath-0.dll" =] 根据二进制类型构建调试或发布 exe 所在的目录。
运行 你的程序,你很高兴。
如果你想避免一次又一次的复制,为包含这些 DLL 的路径设置一个必需的系统环境变量