将OpenBLAS与Qt Creator项目链接



我正在使用Qt Creator进行开发。我想使用Armadillo线性代数库。因此,我在我的专业文件中使用了以下代码:

INCLUDEPATH += C:armadillo-7.950.1include
LIBS += 
-LC:armadillo-7.950.1exampleslib_win64 
-llapack_win64_MT 
-lblas_win64_MT

一切都很好,项目编译和链接都很好。下一个任务是用OpenBLAS替换LAPACK和BLAS。因此,专业文件更改如下:

INCLUDEPATH += C:armadillo-7.950.1include 
C:OpenBLAS-v0.2.19-Win64-int32include
LIBS += 
-LC:OpenBLAS-v0.2.19-Win64-int32lib 
-llibopenblas

现在我收到错误:LNK1104:无法打开文件"libopenblas.lib"。我已经下载了OpenBLAS的windows二进制文件。已安装的文件夹结构如图所示:已安装的OpenBLAS文件夹

请告诉我出了什么问题?

谢谢。

这个问题有两个原因:

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

解决方案:

  1. 选择一个二进制----win64或win32并下载它。

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

  3. 下载自https://sourceforge.net/projects/openblas/files/v0.2.14/根据您在步骤1中下载的二进制类型,所需的丢失dll再次绑定在名称怪异的zip文件"mingw64_dll"或"mingw32_dll"下。这些zip文件包含"libgcc_s_seh-1.dll"、"libgfortran-3-dll"one_answers"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"one_answers"libquadmath-0.dll",具体取决于要构建调试或发布exe所在目录的二进制文件类型。

    1. 运行您的程序,您就可以开始了。

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

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

最新更新