将OpenBLAS与Qt Creator项目相关联

时间:2017-07-07 15:59:31

标签: c++ qt qt-creator openblas

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

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

请告诉我出了什么问题?

感谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这个问题有两个原因:

  1. 奇怪的.lib文件命名为libopenblas.dll.a,即使包名为windows binary。
  2. 不完整的二进制包----它不包含所有必需的dll
  3. 解决方案:

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

    2. 将libopenblas.dll.a重命名为libopenblas.lib,如Yuriy建议

    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的路径设置所需的系统环境变量