我正在使用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文件夹
请告诉我出了什么问题?
谢谢。
这个问题有两个原因:
- 将.lib文件命名为libopenblas.dll.a很奇怪,尽管包被称为windows二进制文件
- 不完整的二进制包----它不包含所有必需的dll
解决方案:
-
选择一个二进制----win64或win32并下载它。
-
按照Yuriy的建议,将libopenblas.dll.a重命名为libopenblas.cib
-
下载自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">
-
像我对你的项目所做的那样添加include和lib,并根据你下载的二进制文件(即win64或X86 )使用正确的目标进行构建
-
从OpenBLAS二进制文件的bin文件夹复制libopenblas.dll,并从"mingw64_dll"或"mingw32_dll"复制"libgcc_s_seh-1.dll"、"libgfortran-3.dll"one_answers"libquadmath-0.dll",具体取决于要构建调试或发布exe所在目录的二进制文件类型。
-
运行您的程序,您就可以开始了。
-
如果您想一次又一次地逃避复制,请为包含这些DLL的路径设置所需的系统环境变量
-
我不熟悉OpenBLAS,但您的配置看起来是正确的。在Windows上,或者至少在MSVC上,除了运行时的DLL文件外,还需要一个.lib文件来链接。相反,看起来OpenBLAS安装了一个神秘的.dll.a文件。听起来应该是一样的:https://github.com/xianyi/OpenBLAS/wiki/How-to-use-OpenBLAS-in-Microsoft-Visual-Studio重命名它可能会有效果,但你可能需要从源代码重建才能获得文件。