【问题标题】:Linking OpenBLAS with Qt Creator project将 OpenBLAS 与 Qt Creator 项目链接
【发布时间】:2017-07-11 04:47:32
【问题描述】:

我正在使用 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”。我已经下载了 OpenBLAS 的 windows 二进制文件。安装的文件夹结构如图:installed OpenBLAS folder

请告诉我出了什么问题?

谢谢。

【问题讨论】:

标签: c++ qt qt-creator openblas


【解决方案1】:

这个问题有两个原因:

  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”或“mingw32_dll”中复制“libgcc_s_seh-1.dll”、“libgfortran-3.dll”、“libquadmath-0.dll”构建 exe 所在的调试或发布目录。

    1. 运行您的程序,一切顺利。

    2. 如果您想一次又一次地逃避复制,请为包含这些 DLL 的路径设置所需的系统环境变量

【讨论】:

    【解决方案2】:

    我不熟悉 OpenBLAS,但您的配置看起来是正确的。 在 Windows 上,或者至少在 MSVC 上,除了运行时的 DLL 文件之外,您还需要一个 .lib 文件来链接。相反,OpenBLAS 似乎安装了一个神秘的 .dll.a 文件。听起来应该是同一件事: https://github.com/xianyi/OpenBLAS/wiki/How-to-use-OpenBLAS-in-Microsoft-Visual-Studio 可能重命名它可以解决问题,但您可能需要从源代码重建才能获取文件。

    【讨论】:

    • libopenblas.dll.a 在我的 OpelBLAS 安装文件夹中。即使我使用 Qt Creator 运行我的项目,我还是切换到了 Visual Studio 来检查它。 libopenblas.dll.a 未被识别为库文件。如果我将其重命名为 libopenblas.lib,则无法正确读取。我遇到了崩溃。
    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    相关资源
    最近更新 更多