将OpenBLAS与Qt Creator项目链接起来

问题描述:

我正在使用Qt Creator进行开发。我想使用Armadillo线性代数库。因此,我在我的pro文件中使用了以下代码:将OpenBLAS与Qt Creator项目链接起来

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。所以亲文件发生了改变如下:

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

请让我知道哪里出了问题?

谢谢。

+0

您好,欢迎堆栈溢出,请花时间去通过[欢迎游览](https://*.com/tour)了解你在这里的方式(并获得你的第一个徽章),阅读如何创建[最小,完整和可验证的示例](https:// *.com/help/mcve),并检查[如何提出好问题](https://*.com/help/how-to-ask),以便增加获得反馈和有用答案的机会。 – DarkCygnus

有两个原因针对此问题:

  1. 的.lib文件的怪异命名为libopenblas.dll.a即使包被称为窗口二进制文件。
  2. 不完整的二进制包----它不包含所有需要的DLL

解决方案:

  1. 选择一个二进制----赢得64或Win32和下载。

  2. 重命名libopenblas.dll.a作为libopenblas.lib作为尤里曾建议

  3. https://sourceforge.net/projects/openblas/files/v0.2.14/下载所需的丢失的DLL正在古怪命名的zip文件“mingw64_dll”或取决于二进制类型“mingw32_dll”再次捆绑您在步骤1中下载的这些zip文件。这些zip文件包含“libgcc_s_seh-1.dll”,“libgfortran-3.dll”和“libquadmath-0.dll”

  4. 添加include和lib,因为我已对您项目和建立与正确的目标取决于你的下载二进制即win64或X86

  5. 根据二进制类型从“mingw64_dll”或“mingw32_dll”复制libopenblas.dll从OpenBLAS二进制文件的bin文件夹和“libgcc_s_seh-1.dll”,“libgfortran-3.dll”,“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 可能重命名它会做的伎俩,但你可能需要从源重建获得文件。

+0

libopenblas.dll.a在我的OpelBLAS安装文件夹中。尽管我正在使用Qt Creator运行我的项目,但我转而使用Visual Studio来检查它。 libopenblas.dll.a不被识别为库文件。如果我将它重命名为libopenblas.lib,它不会被正确读取。我遇到了一个崩溃。 –