"LNK2019 error: unresolved external symbol..." Visual Studio 2019 中安装英特尔-MKL 库时



我有以下问题。需要安装mkl库(从那里您主要需要lapack和blas来处理矩阵和线性代数)。事实上,这一切在Visual Studio中工作并不重要,如果你能告诉我在哪里以及如何工作,我将不胜感激。

实际上,我从这里下载了库:https://learn.microsoft.com/en-us/cognitive-toolkit/setup-mkl-on-windows,似乎,我做了所有必要的步骤来安装它:我将dll文件添加到项目文件夹;在项目属性"C/c++ ->一般→附加包含目录"从已安装的存档文件中添加了include文件夹;in " link ->一般→其他图书馆目录"添加了lib文件夹,并在" link ->输入→额外的dependencies"在安装的存档文件中增加了2个.lib文件。

以下代码:

#include <iostream>
#include <mkl.h>
int main()
{
char transa = 'N';
char transb = 'N';
int n = 2;
double alpha = 1.0;
const double mat[4] = { 1, 2, 3, 2 };
const double mat2[4] = { 2, 2, 2, 2 };
double res[4] = {};
DGEMM(&transa, &transb, &n, &n, &n, &alpha, mat, &n, mat2, &n, &alpha, res, &n);

return 0;
}

返回LNK2019错误:函数_main中引用的未解析的外部符号_DGEMM。请告诉我我做错了什么。如果有一个选项可以在VS之外的地方完成,它也很适合,因为库的功能在不久的将来是需要的

您可以从命令提示符中尝试,链接行顾问https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html?wapkw=link%20line%20advisor会建议您编译和链接代码所需的选项。

如果你想让它在Visual Studio中工作,我建议你下载oneAPI Base工具包https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html,从那里你可以获得最新的oneMKL。

在安装oneAPI Base工具包期间,它会自动将oneMKL集成到你的VS 2019中,因此你只需要在configuration properties > Intel Libraries for oneAPI > use oneMKL (select the required option from the dropdown)中启用/Qmkl选项(不像你如何添加头文件和库文件的路径),然后构建你的代码。

这是我从命令提示符中使用MSVC编译器进行的快速检查,下面是成功生成。exe文件的命令,没有任何链接错误(此处MKLROOT="C:Program Files (x86)InteloneAPImkl2022.2.1include")

CL test.cpp  -I"%MKLROOT%include" /link /LIBPATH:"C:Program Files (x86)InteloneAPImkl2022.2.1libintel64" mkl_intel_lp64.lib mkl_sequential.lib mkl_core.lib

最新更新