将 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 可能重命名它可以解决问题,但您可能需要从源代码重建才能获取文件。

这个问题有两个原因:

  1. .lib 文件的奇怪命名为 libopenblas.dll.a,即使包被称为 windows 二进制。
  2. 不完整的二进制包----它不包含所有必需的 dll

解决方案:

  1. 选择一个二进制文件——win 64 或 win32 并下载。

  2. 按照 Yuriy 的建议将 libopenblas.dll.a 重命名为 libopenblas.lib

  3. 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"

  4. 像我对您的项目所做的那样添加 include 和 lib,并根据您下载的二进制文件使用正确的目标构建,即 win64 或 X86

  5. 从 OpenBLAS 二进制文件的 bin 文件夹复制 libopenblas.dll,从 "mingw64_dll" 或 [=54] 复制 "libgcc_s_seh-1.dll"、"libgfortran-3.dll"、"libquadmath-0.dll" =] 根据二进制类型构建调试或发布 exe 所在的目录。

    1. 运行 你的程序,你很高兴。

    2. 如果你想避免一次又一次的复制,为包含这些 DLL 的路径设置一个必需的系统环境变量