我正在使用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
请告诉我出了什么问题?
感谢。
答案 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)
这个问题有两个原因:
解决方案:
选择二进制文件---- win 64或win32并下载。
将libopenblas.dll.a重命名为libopenblas.lib,如Yuriy建议
从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“
像我对你的项目所做的那样添加include和lib,并使用正确的目标构建,具体取决于你下载的二进制文件,即win64或X86
从OpenBLAS二进制文件的bin文件夹中复制libopenblas.dll,从“mingw64_dll”或“mingw32_dll”复制“libgcc_s_seh-1.dll”,“libgfortran-3.dll”,“libquadmath-0.dll”二进制类型,用于构建exe驻留的调试或释放目录。
运行你的程序,你很高兴。
如果要再次转义复制,请为包含这些DLL的路径设置所需的系统环境变量